Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Apache:对0777目录的权限被拒绝_Php_Linux_Apache_Shell - Fatal编程技术网

Php Apache:对0777目录的权限被拒绝

Php Apache:对0777目录的权限被拒绝,php,linux,apache,shell,Php,Linux,Apache,Shell,我有一个shell脚本,如下所示: #!/bin/bash ( cd /var/qwebirc; ls .git; ) 以及执行脚本的PHP文件: error_reporting(E_ALL); exec("/var/qwebirc/pull.sh 2>&1", $arr); 然后,当我直接调用shell脚本时,我得到了预期的.git的ls输出。当我从CLI调用PHP脚本时,我得到了非常相同的输出。但当从浏览器调用php脚本时,我得到 ls:无法打开目录。git:权限被拒绝 好

我有一个shell脚本,如下所示:

#!/bin/bash
( cd /var/qwebirc; ls .git; )
以及执行脚本的PHP文件:

error_reporting(E_ALL);
exec("/var/qwebirc/pull.sh 2>&1", $arr);
然后,当我直接调用shell脚本时,我得到了预期的.git的ls输出。当我从CLI调用PHP脚本时,我得到了非常相同的输出。但当从浏览器调用php脚本时,我得到

ls:无法打开目录。git:权限被拒绝

好的,显然是apache用户的权限问题。所以我将0777设置为.git及其所有文件以进行测试。chown和chgrp到apache。将脚本更改为:

( cd /var/qwebirc; pwd; whoami; ls -dl .git; ls .git; )
但浏览器中的输出仍然是:

[0] => /var/qwebirc
[1] => apache
[2] => drwxrwxrwx. 8 apache apache 4096 Mar  1 03:59 .git
[3] => ls: cannot open directory .git: Permission denied

这对我来说没什么意义。知道有什么问题吗?谢谢。

所以答案是SELinux。不太清楚它的策略是如何工作的,现在必须研究一下,但是在禁用SELinux之后,apache的ls开始工作。

您的.git目录拥有rwxrwsrwx而不是rwxrwx的权限。执行位上的set group id似乎为on。重置并重试。已更改,但权限仍然被拒绝。