在php中捕获imagemagick命令输出
我正在运行以下 imagemgaick 命令,该命令输出到 stdout:
compare <img1> <img2> -metric MAE null:
我正在尝试从 PHP 捕获此命令的输出。通常我使用 exec($cmd,$output) 命令来阻止 cmd 输出进入 stdout,而是放入 $output 数组中。然而,由于某种原因,这里没有,输出仍然转到标准输出,并且输出数组为空。
知道如何解决这个问题吗?
谢谢。
I'm running the below imagemgaick command which outputs to stdout:
compare <img1> <img2> -metric MAE null:
I'm trying to capture the output of this command from PHP. Normally I use the exec($cmd,$output) commands which stops cmd output from going to stdout and instead places into the $output array. However for some reason here that doesn't, output still goes to stdout and the output array is empty.
Any idea how to workaround this issue?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
exec()
仅将输出放置到输出数组中的 STDOUT,但是各种 imagemagick 工具也会将消息输出到 STDERR。您可以将消息从 STDERR 重定向到 STDOUT (因此也将它们放入 $output 数组中),方法是将其附加到命令末尾:2>&1
或者,如果您希望能够区分消息最初输出的位置,您可以使用 proc_open 来为 STDOUT 和 STDERR 指定单独的管道,并分别捕获它们的输出。
exec()
only places the output to STDOUT in the output array, however various imagemagick tools also output messages to STDERR. You can redirect messages from STDERR to STDOUT (and hence also get them in $output array), by appending this at the end of your command:2>&1
Alternatively if you want to be able to differentiate where the messages were originally output, you can use
proc_open
that allows you to specify separate pipes for STDOUT and STDERR, and capture output from them separately.将打印结果与 STDERR 进行比较。
使用:
Compare prints to STDERR.
Use: