Wordpress 无法写入新的 .htacess 文件或修改我输入的文件。我已将所有者设置为 apache:apache,文件权限为 644。
更新 - 我花了好几个小时阅读与我类似的帖子。标准似乎是这样的:
- 运行 Web 服务的用户需要拥有 .htaccess 文件(完成)。
- 文件权限需要设置为644(完成)。
输出ls -Z .htaccess
:
-rwxr--r--. apache apache unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/.htaccess
答案1
在 SELinux 处于活动状态的系统上(这是 CentOS 上的默认设置),设置正常权限是不够的,您还必须确保文件对于必须访问该文件的进程具有正确的 SELinux 上下文。
您的 .htaccess 文件具有 SELinux 上下文httpd_sys_content_t
,这使得它只能由 Web 服务器读取。要使其可由 Web 服务器写入,您需要更改该上下文。我目前没有 CentOS 安装可供测试,但快速的互联网搜索wordpress selinux
发现上下文public_content_rw_t
应该是合适的。您可以使用以下命令更改上下文:
chcon -t public_content_rw_t .htaccess
请注意,如果您希望 WordPress 能够以舒适的方式上传文件并安装主题和插件,您还需要以类似的方式使目录plugins
、themes
和可写。uploads
答案2
您以哪个用户身份运行服务器实例?除非您正在为可执行脚本运行 SUExec,否则您应该能够通过运行以下命令确定正确的用户:
ps -ef | egrep '(httpd|apache2|apache)' | grep -v $(whoami) | grep -v root | head -n1 | awk '{print $1}'
权限 0744 是不必要的。不会执行 .htaccess。
或者您将所有权更改为 root 并将权限设为 0600(仅可写,所有者可读),这是推荐的解决方案。
如果您想使其可全世界写入(不推荐!)您可以将模式设置为 0666。