Wordpress 无法创建或修改 .htaccess 文件

Wordpress 无法创建或修改 .htaccess 文件

Wordpress 无法写入新的 .htacess 文件或修改我输入的文件。我已将所有者设置为 apache:apache,文件权限为 644。

更新 - 我花了好几个小时阅读与我类似的帖子。标准似乎是这样的:

  1. 运行 Web 服务的用户需要拥有 .htaccess 文件(完成)。
  2. 文件权限需要设置为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 能够以舒适的方式上传文件并安装主题和插件,您还需要以类似的方式使目录pluginsthemes和可写。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。

相关内容