本地目录的PHP chdir()权限被拒绝

时间:2010-03-23 14:39:01

标签: php permissions

我正在研究在服务器上运行Python脚本的PHP脚本。我的服务器使用Apache 2.2.3和PHP 5.1.6运行CentOS 5.4。

这是PHP代码:

chdir("/home/cjones/git/pywrapper");
$output = shell_exec("python /home/cjones/git/pywrapper/wrapper.py");

这给了我这个错误:

Warning: chdir() [function.chdir]: Permission denied (errno 13) in /var/www/html/wrapper.php on line 20

在shell_exec调用中,我也尝试使用“cd / home / cjo ...&& python ...”,但这不起作用。

脚本需要从该目录运行,否则它会开始抛出错误,因为它无法找到所需的文件。如果所有其他方法都失败了,我可以将路径硬编码到python脚本中,而不是使用相对路径。

这是〜{git

ls -l的相关输出
drwxrwxr-x  5 cjones cjones 4096 Mar 23 08:45 pywrapper

我也试过了chmod 777 ~/git/pywrapper但是没有用。目前的设置仅为775。

我最好的猜测是apache用户由于某种原因无法访问我用户的主目录?但我不知道如何允许它。

2 个答案:

答案 0 :(得分:1)

仅更改'git'和'pywrapper'目录的权限是不够的。 Apache也需要能够访问'cjones'。大多数Linux框默认为用户的主目录为模式0700.如果您不想放宽对0777级别的权限并授予全局访问权限,则可以将组所有权更改为您和apache共享的新组,并授予0770到/ home / cjones,/ home / cjones / git,和/ home / cjones / pywrapper

答案 1 :(得分:0)

最好让您的网站目录不在您的主目录中,但将其符号链接到例如/var/www/mysite

也就是说,你可以chmod o+x ~; chmod o+x ~/git; #etc.获取目录,chmod o+r ~/git/pywrapper/blablablabla获取文件python在作为Apache运行时需要能够读取的内容。