php : 捕获命令输出
2022-08-30 22:57:50
我正在使用exec函数来执行php中的特定可执行文件。
exec ( $file , $output , $return_value ) ;
当给定的文件成功执行时,我能够通过检查返回值来获得第二个参数中的输出,因此,它工作正常。但是我的要求是当命令执行由于某种原因而失败时。我需要获取该已执行程序的错误消息。我需要做什么才能得到错误。通过第二个参数,我们只能获得成功的输出。不是错误消息。
谢谢。
我正在使用exec函数来执行php中的特定可执行文件。
exec ( $file , $output , $return_value ) ;
当给定的文件成功执行时,我能够通过检查返回值来获得第二个参数中的输出,因此,它工作正常。但是我的要求是当命令执行由于某种原因而失败时。我需要获取该已执行程序的错误消息。我需要做什么才能得到错误。通过第二个参数,我们只能获得成功的输出。不是错误消息。
谢谢。
第二个参数仅从可执行文件中捕获。错误消息通常发送到,以便可以轻松地将它们写入错误日志或类似日志,但这意味着当您调用 时,您将看不到它们。$output
STDOUT
STDERR
exec
如果这是一个 Linux 系统,您可以附加到命令,以便重定向到 。我还没有尝试过,但它应该将错误消息转发到您的$output变量。2>&1
STDERR
STDOUT
编辑:
我已经在 www.php.net/exec 上阅读了它,似乎这会起作用。
exec($file.' 2>&1', $outputAndErrors, $return_value);
也可以将错误重定向到临时文件并单独读取它们。
exec($file.' 2> '.$tmpFile, $outputOnly, $return_value);
编辑 2
似乎Windows也使用此Bourne样式的输出重定向语法,因此这些示例也应该适用于Windows。