спасибоза то, что нашли время помочь мне с этой проблемой:
У меня был блог Wordpress, размещенный на общем хостинговом аккаунте Bluehost. В настоящее время я вручную переношу его на созданный в AWS Elastic Beanstalk экземпляр EC2 с использованием Amazon Linux AMI. Используя SSH, я:
- экспортировал и импортировал базу данных в базу данных MySQL нового сервера
- скопированы все файлы Wordpress с владельцем ec2-user:ec2-user
- установите для всех каталогов разрешения 755, а для всех файлов — 644.
На этом этапе индекс блога загружался совершенно нормально. Однако, когда я попытался нажать на одну из записей, которая ранее использовала красивые постоянные ссылки, Wordpress не смог ее загрузить, потому что у меня не было файла .htaccess с использованием mod_rewrite (обратите внимание, что перенос оригинального .htaccess невозможен). Поэтому я вошел в раздел администратора и в разделе Настройки > Постоянные ссылки попытался воссоздать файл .htaccess. Однако я получил следующее сообщение от Wordpress: «Если бы ваш файл .htaccess был доступен для записи, мы могли бы сделать это автоматически, но это не так, поэтому вот правила mod_rewrite, которые вы должны иметь в своем файле .htaccess». На этом этапе я создал пустой файл .htaccess с надлежащими разрешениями и повторил попытку, но с тем же результатом.
Я также заметил в этот момент, что в разделе администратора я не мог загружать изображения в раздел медиа. Отсюда я понял, что это проблема с владением.
Основываясь на двух вышеупомянутых проблемах, я использовал whoami
php, shell_exec()
чтобы определить, какой пользователь использует Wordpress, и узнал, что пользователь webapp
используется. Elastic Beanstalk создает webapp
пользователя для использования для загрузки и развертывания новых версий кода через консоль (однако я вручную загружаю код через SFTP, используя учетную запись ec2-user). Отсюда я:
- изменил владельца всех файлов/каталогов Wordpress на webapp:ec2-user
- установите для всех каталогов права доступа 775, а для всех файлов — 664 (чтобы я, как пользователь ec2, также мог писать в них)
На этом этапе загрузка медиа работала отлично. Однако Wordpress все еще не мог создать/записать в файл .htaccess. Разочарованный на этом этапе, я установил права доступа 777, просто чтобы посмотреть, сработает ли это, но и это не сработало.
Любая помощь будет высоко оценена. И еще раз спасибо за ваше время!
решение1
Версии Redhat/Centos? В настоящее время SELinux включен по умолчанию и жестко ограничивает процесс веб-сервера. Вывод ls -alZ .htaccess
? Только файлы, помеченные типом selinux, httpd_sys_rw_content_t
могут быть изменены процессом веб-сервера, независимо от старых rwx
разрешений unix. Используйте chcon -t httpd_sys_rw_content_t .htaccess
для изменения.