在某些时候,我失去了通过WP主题编辑器编辑主题文件的能力,因为该文件据说不可写(is_writable()
返回false)。访问它时,将显示以下消息:
您需要先使此文件可写,然后才能保存更改。有关详细信息,请参阅更改文件权限。
我的網站在我自己的 CentOS 7 伺服器上運行,我已確定所有建議的文件權限設定都已到位:
-
httpd 在 Apache 用户下运行
/ var/www/下的文件和文件夹归 apache:apache 所有
所有文件权限设置为 644,文件夹设置为 755
未定义DISALLOW_FILE_EDIT
httpd.conf:
<Directory “/var/www/html”> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
/var/www/html/.htaccess:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
停用所有插件
测试手动修改文件作为 apache 并按预期工作 (
su -s /bin/bash apache
)
我的系统中还有其他我无法识别的东西阻止我能够适当地管理我的网站。
系统信息:
- CentOS 7
- 阿帕奇 2.4.6
- 菲律宾比索 7.4.16
- MariaDB 10.3.28
- WordPress 5.7
我找到了我的问题的解决方案:
SELinux 被配置为只允许 httpd 服务对文件的读取权限。即使文件权限设置授予了 apache 用户 RW 权限,该服务也被拒绝。
# Check SELinux settings on Wordpress folder
ls -Z /var/www/html/
drwxr-xr-x. apache apache system_u:object_r:httpd_sys_content_t:s0 wp-content
object_r:httpd_sys_content_t:只读
object_r:httpd_sys_rw_content_t:读写
要配置您希望能够通过Wordpress(httpd服务)修改的文件夹/文件:
# Configure SELinux to allow Read/Write rights to httpd
sudo chcon -t httpd_sys_rw_content_t /var/www/html/wp-content -R
上面的示例为文件夹/var/www/html/wp-content 及其所有内容提供了 https 的 R/W 权限。