首页 > 解决方案 > PHP exec() 输出截短

问题描述

我有一个 PHP 文件,它使用 exec() 运行节点脚本来收集输出,如下所示:

$test = exec("/usr/local/bin/node /home/user/www/bin/start.js --url=https://www.example.com/");
echo $test;

它在 --url 参数中输出与网站相关联的 JSON 数据字符串。它工作得很好,但有时输出字符串会被缩短。

当我直接在 exec() 脚本中运行命令时,我得到了完整的输出,正如预期的那样。

为什么会这样?我也尝试过运行 shell_exec() ,但同样的事情发生在输出被缩短时。

php.ini 或其他地方是否有设置来增加输出字符串的大小?

标签: php

解决方案


似乎让这个工作的唯一方法是传递exec()给一个临时文件,如下所示:

exec("/usr/local/bin/node /home/user/www/bin/start.js --url=https://www.example.com/ > /home/user/www/uploads/json.txt");
$json = file_get_contents('/home/user/www/uploads/json.txt');
echo $json;

我更喜欢直接输出并尝试output_buffering在 php.ini 中增加而没有任何变化(输出仍然被切断)。

绝对对其他想法持开放态度以避免临时文件,但也可以接受这个并且unlink()每次运行时只使用该文件。


推荐阅读