非常感谢感谢您抽出宝贵时间帮助我解决这个问题:
我有一个 Wordpress 博客托管在共享的 Bluehost 托管账户上。我目前正在使用 Amazon Linux AMI 将其手动迁移到 AWS Elastic Beanstalk 创建的 EC2 实例。使用 SSH,我:
- 将数据库导出并导入到新服务器的 MySQL 数据库中
- 复制所有 Wordpress 文件,所有权为 ec2-user:ec2-user
- 将所有目录权限设置为 755,将所有文件权限设置为 644。
此时,博客索引加载完全正常。但是,当我尝试点击之前使用漂亮永久链接的帖子之一时,Wordpress 无法加载它,因为我没有使用 mod_rewrite 的 .htaccess 文件(请注意,传输原始 .htaccess 不是一种选择)。因此,我登录到管理部分,在“设置”>“永久链接”下,我尝试重新创建 .htaccess 文件。但是,我收到了来自 Wordpress 的以下消息:“如果您的 .htaccess 文件是可写的,我们可以自动执行此操作,但不是,因此这些是您应该在 .htaccess 文件中拥有的 mod_rewrite 规则。”此时,我创建了一个具有适当权限的空白 .htaccess 文件并重试,但结果相同。
此时我还注意到,在管理部分中,我无法将图片上传到媒体部分。从那里,我意识到这是一个所有权问题。
基于以上两个问题,我使用whoami
PHPshell_exec()
来确定 Wordpress 正在使用哪个用户,并了解到该用户webapp
正在被使用。Elastic Beanstalk 创建webapp
用户以用于通过控制台上传和部署新代码版本(但是,我使用 ec2-user 帐户通过 SFTP 手动上传代码)。从这里我:
- 将所有 Wordpress 文件/目录所有权更改为 webapp:ec2-user
- 将所有目录权限设置为 775,将所有文件权限设置为 664(以便我作为 ec2-user 也可以写入它们)
此时,媒体上传工作正常。但是,Wordpress 仍然无法创建/写入 .htaccess 文件。我感到很沮丧,于是我把权限设置为 777,看看是否可行,但同样无效。
非常感谢您的帮助。再次感谢您的时间!
答案1
Redhat/Centos 的版本?如今,SELinux 默认启用,并严格限制 Web 服务器进程。输出ls -alZ .htaccess
?只有标有 selinux 类型的文件httpd_sys_rw_content_t
才能由 Web 服务器进程更改,无论旧的rwx
unix 权限如何。使用chcon -t httpd_sys_rw_content_t .htaccess
进行更改。