PHP脚本在从浏览器调用而不是从CLI调用时失败


PHP script fails when called from a browser but not from CLI

我快疯了。

我已经减少了我的问题:我有一个简单的文件'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开始,因此所有内容都应该相对于它。