这让我疯了。
我已经解决了这个问题:我有一个简单的文件' 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
答案 0 :(得分:0)
如果权限等等都可以,可能是apache配置。在您的设置中设置了'ChrootDir':
http://httpd.apache.org/docs/2.2/mod/mpm_common.html#chrootdir
这使用了系统调用chroot(),该进程的'/'dir视图从这个安装目录开始,因此一切都应该是相对的。