Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
反复从shell调用PHP_Php_Shell - Fatal编程技术网

反复从shell调用PHP

反复从shell调用PHP,php,shell,Php,Shell,我在运行CPANEL/WHM的VPS上遇到问题,通过shell\u exec()调用PHP脚本会导致它重复重新加载目标,直到服务器崩溃。我已经通过创建一个非常简单的示例来说明该行为,消除了目标脚本中存在的可能性,该示例涉及两个脚本: 要从web调用的脚本 目标脚本 从命令行运行test.php会产生预期的输出(“毕竟是一个小世界”),但通过web浏览器调用test.php会试图反复启动target.php,直到服务器崩溃 我应该注意,这不会发生在非php目标上;例如,shell\u exec('

我在运行CPANEL/WHM的VPS上遇到问题,通过
shell\u exec()
调用PHP脚本会导致它重复重新加载目标,直到服务器崩溃。我已经通过创建一个非常简单的示例来说明该行为,消除了目标脚本中存在的可能性,该示例涉及两个脚本:

要从web调用的脚本 目标脚本 从命令行运行
test.php
会产生预期的输出(“毕竟是一个小世界”),但通过web浏览器调用test.php会试图反复启动
target.php
,直到服务器崩溃

我应该注意,这不会发生在非php目标上;例如,
shell\u exec('ls')
完全按照预期工作

这不会发生在我当地的流浪者箱上,也不会发生在digital ocean上的VPS上。我只在CPanel服务器上得到这个结果(它最终必须在那里生存)

虽然可能存在一些解决方法,但需要解决根本原因,因为在一些情况下,这种类型的模式对应用程序很有帮助

尝试的修复/探索(基于评论)
  • 基于Chrome中的网络选项卡信息,Web浏览器不会多次重新加载页面
  • 与浏览器无关:在详细模式下通过CURL调用。单次调用,挂起直到web服务器崩溃

CPanel可能正在使用一个定制的php.ini配置运行,该配置可能在自动预编或追加文件方面做了一些奇怪的事情。因此,当它加载
target.php
时,它会自动包含
test.php
,并陷入无限循环。由于其他环境不使用该配置,因此它们没有相同的问题

使用
-n
运行命令,使其不包含php.ini配置。i、 e

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

target.php是做什么的?@frank-target.php的全部功能在上面。它输出“这毕竟是一个小世界”,为什么您要在php的shell中执行另一个脚本?您可以只包含该文件,然后它将运行。使用诸如httpfox或firebug的“网络”选项卡,查看您的浏览器正在执行的操作。可能是您的服务器发出重定向或元刷新,导致页面不断被重新点击。@MarcB很好的建议,但不幸的是不是这样。
 # script: target.php
 echo "Its a small world after all \n";
shell_exec('php -n target.php');