我正在使用exec函数在php中执行特定的可执行文件。
exec ( $file , $output , $return_value ) ;
当给定的文件成功执行时,通过检查返回值,我能够在第二个参数中获得输出。因此,它工作正常。但我的要求是,当由于某些原因命令执行失败时,我需要获取该程序的错误消息。我需要做什么才能获取该错误?通过第二个参数,我们只能获取成功的输出,而无法获取错误消息。
谢谢。
我正在使用exec函数在php中执行特定的可执行文件。
exec ( $file , $output , $return_value ) ;
当给定的文件成功执行时,通过检查返回值,我能够在第二个参数中获得输出。因此,它工作正常。但我的要求是,当由于某些原因命令执行失败时,我需要获取该程序的错误消息。我需要做什么才能获取该错误?通过第二个参数,我们只能获取成功的输出,而无法获取错误消息。
谢谢。
$output
只捕获您的可执行文件的STDOUT
。错误消息通常发送到STDERR
,以便可以将其轻松写入错误日志或类似的地方,但这意味着当您调用exec
时,您将看不到它们。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上也应该有效。
$return_value
将返回程序的错误代码,这应该足够有意义了,我认为你无法获得更好的。