Php Apache:对0777目录的权限被拒绝
我有一个shell脚本,如下所示: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:权限被拒绝 好
#!/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。重置并重试。已更改,但权限仍然被拒绝。