我正在使用 exec 函数来执行 php 中的特定可执行文件。
exec ( $file , $output , $return_value ) ;
当给定文件成功执行时,我能够在第二个参数中获得输出 通过检查返回值,所以,它工作正常。但我的要求是当命令执行由于某种原因失败时。我需要得到那个执行程序的错误信息。我需要做什么才能得到错误。通过第二个参数我们只能得到成功的输出。不是错误信息。
谢谢。
最佳答案
第二个参数 $output
只从你的可执行文件中捕获 STDOUT
。错误消息通常会发送到 STDERR
,以便可以轻松地将它们写入错误日志或类似文件,但这意味着您在调用 exec
时不会看到它们。
如果这是一个 linux 系统,您可以将 2>&1
附加到您的命令,以便将 STDERR
重定向到 STDOUT
。我没试过这个,但它应该将错误消息转发到您的 $output 变量。
编辑:
我已经在 www.php.net/exec 上阅读了它,这似乎可行。
exec($file.' 2>&1', $outputAndErrors, $return_value);
也可以将错误重定向到临时文件并单独读取它们。
exec($file.' 2> '.$tmpFile, $outputOnly, $return_value);
编辑 2
Windows 似乎也使用这种 Bourne 风格的输出重定向语法,因此这些示例也适用于 Windows。
关于PHP : Capturing the command output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3099617/