我有Linux用户,请说 admin 。 Apache进程在 admin 用户下运行。我有下一个用于测试权限的简单脚本:
<?php
$flag=is_writable("/var/www/html/admin/protected/runtime");
if($flag)
print "Is writable\n";
else
print "Is not writable\n";
echo 'Current user: ' . exec('whoami');
?>
当我在控制台中运行此脚本时,它会显示:
Is writable
Current user: admin
当我在 Firefox 中打开页面时,它说:
Is not writable Current user: admin
我很困惑,该目录如何可写并且在同一用户下无法同时写入?
答案 0 :(得分:2)
问题在于selinux。许可模式setenforce 0
- 解决问题。但这不是一个好的解决方案,更好的是配置selinux。有关selinux的更多信息,请访问https://wiki.centos.org/HowTos/SELinux。
答案 1 :(得分:0)
我确定centos正在以非群组用户身份查看您的浏览器,因此如果您对该目录的权限不是777,那么Firefoxe可能无法执行此操作。
您可以将目录的所有权更改为apache sudo chown -R www-data:www-data / path-to-directory
或者你可以尝试制作文件权限777,看看是不是问题。
通常,出于安全原因,最好将文件保存到数据库中。
答案 2 :(得分:0)
请参阅https://techblog.jeppson.org/2016/10/install-wordpress-centos-7/,它回答了我的许多SELinux问题。
基本上,您可以将setenforce
移至1
并运行
sudo semanage fcontext -a -t httpd_sys_content_t /var/www/html/
sudo restorecon -v /var/www/html/
向您的wordpress目录授予特定权限。
====编辑====
在实践中,它可以解决最主要的wordpress根目录问题,但较低级别的问题。我结束了:
chcon -R -t httpd_sys_rw_content_t /var/www/html/