我熟悉system()
或passthru()
或exec()
之类的PHP命令,但现在我想执行命令并在php变量中获取原始输出。不向PHP自己的输出发送任何内容,例如从调用我的脚本的浏览器或CLI。
system()
和passthru()
似乎会将命令的输出转发到PHP自己的输出,并且exec()
接受用于文本输出的数组。但是我目前正在处理二进制输出(图像数据)。
我能得到的最接近的是这个:
function Execute($command)
{
ob_start();
passthru($command);
$raw = ob_get_contents();
ob_end_clean();
return $raw;
}
哪个做到了。但是对我来说似乎有点破烂。是否没有本机或直接方法来执行命令并捕获输出,而不是直接将输出转发到我的PHP脚本自己的输出?
(仅供参考:我在macOS 10.15 Catalina上使用的是PHP 7.3,但在Linux环境中会类似)
您是否希望$ command产生二进制输出?如果没有,那么您可以执行以下操作:
function Execute($command) {
$output = [];
exec($command, $output);
return implode(PHP_EOL, $output);
}
对于二进制输出,passthru
最好。