目录不可写CentOS7,Apache 2.4.6,PHP 5.4.16

时间:2017-07-25 18:35:09

标签: php apache

我有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

我很困惑,该目录如何可写并且在同一用户下无法同时写入?

3 个答案:

答案 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/