php - 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 或其他地方是否有设置来增加输出字符串的大小?
解决方案
似乎让这个工作的唯一方法是传递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()
每次运行时只使用该文件。
推荐阅读
- java - 在片段中的 recyclerView 上使用 findViewById 时出现 NullPointerException
- java - 如何为 Json 对象使用动态属性名称
- node.js - 无法使用链接来获取不同的标题
- c# - 无法将 lambda 表达式转换为类型“ServiceLifetime”,因为它不是 Asp.net core 2.2 上的委托类型
- php - 使用 .htaccess 进行动态页面重定向
- python - 为什么显示这个错误
- go - 如何通过struct的fieldName获取值
- python - 如何使用夹具使 pytest 中的异步测试超时?
- go - 如何制作反向代理?
- java - activityStartTrigger:使用谷歌登录时不是白名单