Apache / PHP没有读取文件的权限

时间:2013-10-24 23:45:08

标签: php apache svn websvn

我有一个网页试图读取文件但是获得了权限被拒绝错误。我写了一个非常简单的页面来重现这个问题。

<?php
echo exec('whoami');
echo "<br>";
echo exec('cat /var/svn/aaa/format 2>&1');
?>

作为测试,我尝试将svn目录和下面的所有内容设置为荒谬的777,将所有权更改为apache并尝试将apache用户添加到不同的组。我已经确认它是作为apache用户运行的(上面的whoami调用是什么)。如果我尝试在命令行上以apache运行上述命令,那么它可以正常工作,例如

sudo -u apache cat /var/svn/aaa/format 2>&1

为什么这不符合我的期望?我希望给文件777提供“其他”完全权限,我希望将所有者更改为apache也可以解决问题。我希望做sudo,因为apache用户如果从php失败就会失败。

顺便说一句,为了完整性,这是我运行WebSVN的一个问题,但它似乎是一个apache问题,而不是WebSVN问题。

2 个答案:

答案 0 :(得分:0)

which cat

在你的exec中使用cat的完整路径

答案 1 :(得分:0)

修好了。我尝试了一个不同的盒子,没有做任何事情,它首先工作。我有我试图访问的文件由root拥有,并没有设置任何权限。寻找不同的东西,原来是SELinux。我不知道那是什么,但禁用它修复了问题。我猜它是某种安全'功能'?打电话给getenforce告诉我它已经开启,我可以使用setenforce来让它变得宽松。

me@host# getenforce
Enforcing

me@host# setenforce Permissive

另一个选项是在配置文件/ etc / sysconfig / selinux中禁用它。我猜测之后需要重新启动。

SELINUX=disabled

感谢大家的回复。