我在运行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服务器上(最终它必须存在)。
虽然可能有可能解决方法,但需要解决根本原因,因为在某些情况下此类模式对应用程序有帮助。
答案 0 :(得分:0)
可能CPanel正在使用自定义的php.ini配置运行,这可能会在自动预先添加或附加文件时做一些时髦的事情。因此,当它加载target.php
时,它会自动包含test.php
,并在无限循环中被捕获。由于其他环境未使用该配置,因此它们没有相同的问题。
使用-n
运行命令,因此它不包含php.ini配置。即。
shell_exec('php -n target.php');