从浏览器调用PHP脚本失败但从CLI调用失败

时间:2014-03-26 01:58:21

标签: php

这让我疯了。

我已经解决了这个问题:我有一个简单的文件' 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

1 个答案:

答案 0 :(得分:0)

如果权限等等都可以,可能是apache配置。在您的设置中设置了'ChrootDir':

http://httpd.apache.org/docs/2.2/mod/mpm_common.html#chrootdir

这使用了系统调用chroot(),该进程的'/'dir视图从这个安装目录开始,因此一切都应该是相对的。