从shell中调用PHP反复激活

时间:2015-04-14 14:33:43

标签: php shell

我在运行CPANEL / WHM的VPS上遇到问题,通过shell_exec()调用PHP脚本会导致它重复重新加载目标,直到服务器崩溃。通过创建一个显示行为的非常简单的示例,我已经删除了目标脚本中某些内容的可能性,包括两个脚本:

从网络上调用的脚本

# script: test.php
echo shell_exec('php target.php');

目标脚本

 # script: target.php
 echo "Its a small world after all \n";

从命令行运行test.php会产生您期望的输出("毕竟它是一个小世界")但是通过Web浏览器调用test.php正试图启动重复target.php直到服务器崩溃。

我应该注意到非php目标不会发生这种情况;例如,shell_exec('ls')完全按预期工作。

这不会发生在我当地的流浪者盒子或数字海洋上的VPS上。我只是将这个结果发送到CPanel服务器上(最终它必须存在)。

虽然可能有可能解决方法,但需要解决根本原因,因为在某些情况下此类模式对应用程序有帮助。

尝试修复/探索(基于评论)

  • 根据Chrome中的网络标签信息,网络浏览器未多次重新加载页面
  • 与浏览器无关:在详细模式下通过CURL调用。单个呼叫,挂起直到Web服务器崩溃

1 个答案:

答案 0 :(得分:0)

可能CPanel正在使用自定义的php.ini配置运行,这可能会在自动预先添加或附加文件时做一些时髦的事情。因此,当它加载target.php时,它会自动包含test.php,并在无限循环中被捕获。由于其他环境未使用该配置,因此它们没有相同的问题。

使用-n运行命令,因此它不包含php.ini配置。即。

shell_exec('php -n target.php');