2010-03-23 49 views
1

我正在研究在服务器上运行Python脚本的PHP脚本。我的服务器使用Apache 2.2.3和PHP 5.1.6运行CentOS 5.4。对本地目录拒绝PHP chdir()权限

这是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 /家庭/ CJO ... & & python ...“,但这不起作用。

该脚本需要从该目录运行,或者由于无法找到想要的文件而开始抛出错误。如果一切都失败了,我可以将路径硬编码到python脚本中,而不是使用相对路径。

这是ls -l的〜/ git的

drwxrwxr-x 5 cjones cjones 4096 Mar 23 08:45 pywrapper 

相关输出我还曾试图chmod 777 ~/git/pywrapper但没有奏效。目前的设置只是775.

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

+0

我不认为这是php或权限。正如你猜测的,我认为它是apache。听起来像你必须在你的目录的httpd.conf文件中创建一个别名。当然,这可能不是正确的做法,但基于你的问题,我认为你正在尝试做什么。另见http://stackoverflow.com/questions/1225594/apache-13-permission-denied-in-users-home-directory – MJB 2010-03-23 14:43:53

回答

1

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

0

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

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