我快疯了。
我已经减少了我的问题:我有一个简单的文件'test.php'调用一个php文件(这是从一个更大的应用程序,所以实际上我们需要从一个主脚本执行许多php脚本):
<?php
exec("php /var/www/setActive.php 273 1 2>&1",$arO,$nO);
echo $nO.'|'.implode(',',$arO);
setActive.php的原始路径要长得多,在这个例子中我缩短了它。
现在,如果我尝试:
[root@stg]# sudo -u apache php test.php
我:
0|
很好,这意味着setActive.php脚本运行得很顺利。
现在,如果我从浏览器或curl中尝试:
[root@stg]#curl http://my.url/path/test.php
这是我得到的:
1|Could not open input file: /var/www/setActive.php
我已经审查了所有的权限。Apache用户可以访问所有目录和文件。这在另一个服务器上工作正常。我检查了php.ini文件,它们之间没有区别。
也许是一个选项,我没有看到,或apache配置选项。我已经没有主意了。
请帮帮我!
提前感谢。
我有Linux, Cent OS。PHP 5.3.23
如果权限等。一切都好,可能是apache配置。
:http://httpd.apache.org/docs/2.2/mod/mpm_common.html chrootdir
这将使用系统调用chroot()和'/' dir的视图,因为该进程从这个setup dir开始,因此所有内容都应该相对于它。