在php中捕获imagemagick命令输出

在php中捕获imagemagick命令输出,php,system,stdout,Php,System,Stdout,我正在运行下面的imagemgaick命令,该命令将输出到stdout: compare <img1> <img2> -metric MAE null: 比较-度量MAE空值: 我正在尝试从PHP捕获此命令的输出。通常我使用exec($cmd,$output)命令来阻止cmd输出进入stdout,而是放入$output数组。然而,由于某些原因,输出仍然会转到标准输出,并且输出数组为空 你知道如何解决这个问题吗 谢谢。exec()只将输出放在输出数组中的STDOUT,但

我正在运行下面的imagemgaick命令,该命令将输出到stdout:

compare <img1> <img2> -metric MAE null:
比较-度量MAE空值:
我正在尝试从PHP捕获此命令的输出。通常我使用exec($cmd,$output)命令来阻止cmd输出进入stdout,而是放入$output数组。然而,由于某些原因,输出仍然会转到标准输出,并且输出数组为空

你知道如何解决这个问题吗

谢谢。

exec()
只将输出放在输出数组中的STDOUT,但是各种imagemagick工具也将消息输出到STDERR。您可以将消息从STDERR重定向到STDOUT(因此也可以在$output数组中获取它们),方法是在命令末尾追加此命令:
2>&1


或者,如果您希望能够区分消息最初输出的位置,可以使用
proc\u open
,它允许您为STDOUT和STDERR指定单独的管道,并分别捕获它们的输出。

将打印与STDERR进行比较

使用:

exec(“比较-度量MAE null:2>&1”,$output);
exec("compare <img1> <img2> -metric MAE null: 2>&1", $output);