反复从shell调用PHP
我在运行CPANEL/WHM的VPS上遇到问题,通过反复从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('
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服务器崩溃
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');