Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.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
当从exec()调用PHP脚本时,该脚本部分失败_Php - Fatal编程技术网

当从exec()调用PHP脚本时,该脚本部分失败

当从exec()调用PHP脚本时,该脚本部分失败,php,Php,我有一个可以从浏览器执行的父PHP脚本。这将通过exec('/full/path/to/php-f/full/path/to/child_script.php args&>debug.log&')生成一个子进程,然后向浏览器返回响应。子进程使用Plates和mPDF生成一组PDF文件。当从浏览器中通过exec调用时,子脚本通过创建PDF获得大约10%-20%的速度,然后神秘地停止,没有任何输出,除了出于调试目的而输入的echo语句 使用与浏览器使用的命令完全相同的命令从CLI调用时,子脚本可以

我有一个可以从浏览器执行的父PHP脚本。这将通过exec('/full/path/to/php-f/full/path/to/child_script.php args&>debug.log&')生成一个子进程,然后向浏览器返回响应。子进程使用Plates和mPDF生成一组PDF文件。当从浏览器中通过
exec
调用时,子脚本通过创建PDF获得大约10%-20%的速度,然后神秘地停止,没有任何输出,除了出于调试目的而输入的
echo
语句

  • 使用与浏览器使用的命令完全相同的命令从CLI调用时,子脚本可以工作
  • exec()
    调用可以在我的本地机器和我们的QA服务器上运行,但不能在生产环境中运行
  • 安全模式关闭
  • 我已
    chmod 0777
    编辑了子脚本及其操作的所有文件/目录
  • 显示错误
    记录错误
    跟踪错误
    都处于启用状态
  • error_reporting=E_ALL | E_STRICT
  • 最大执行时间=600
  • exec
    不在
    禁用功能中
  • 在子脚本中调用
    set\u time\u limit(0)
我真的被难住了。这可能是什么原因造成的?或者我应该采取什么进一步的步骤来调试

更新


问题不在于调用
exec
(或
shell\u exec
)本身,因为我可以调用父脚本,然后从CLI通过
exec
调用主脚本。只有当我尝试通过web执行时,问题才会出现。

一些评论是正确的。在与我的托管公司讨论了这一点之后,他们似乎在120秒的CPU时间后终止了脚本。这就是为什么我没有从PHP收到任何时间限制错误消息,并且实际执行时间不一致


我的解决方案是将其重构为cron作业,其中服务器允许更长的限制。谢谢大家的建议。

如果它打印回显语句,您如何知道它已停止?它将停止生成PDF。基本上,它是一个执行250多次的循环,每次迭代生成一个PDF。我会定期获取前30-70次迭代的echo语句,然后什么都不做。就我个人而言,如果我必须在脚本中使用
exec()
,我会确保它不能通过浏览器窗口访问,如果适用的话,将其设为cron作业。@皮特,我也希望这样做,但我的客户希望能够通过浏览器提交。虽然如果我不能让它工作。您是否尝试过使用
shell\u exec
而不是
exec
?如果您通读这些示例,还需要检查更多的环境变量。