【问题标题】:PHP script fails when called from a browser but not from CLI从浏览器而不是 CLI 调用 PHP 脚本失败
【发布时间】:2014-03-26 01:58:21
【问题描述】:

这让我发疯了。

我已将我的问题简化为:我有一个简单的文件“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 操作系统。 PHP 5.3.23

【问题讨论】:

  • 你在 apache 日志中得到了什么?
  • my.url是同一个服务器吗?
  • 您确定该脚本是可访问的(文件权限,正确的路径,VirtualHost 可访问)?
  • @Shaun Scovil:在示例中,我使用 sudo 作为 apache 用户 (sudo -u) 运行脚本。如果我省略了 sudo,它将以“root”身份运行,结果相同(成功执行)。
  • @user3462228 SELinux, Suhosin

标签: php


【解决方案1】:

如果权限等都正常,可能是 apache 配置。在您的设置中设置了“ChrootDir”:

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

这使用系统调用 chroot() 并且该进程的“/”目录的视图从这个设置目录开始,因此一切都应该与它相关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 2011-02-26
    相关资源
    最近更新 更多