PHP : Capturing the command output

标签 php

我正在使用 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。

More on input and output streams

关于PHP : Capturing the command output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3099617/

相关文章:

php - 尝试更新数值时出现语法错误 (MySQL)

php - 从数据库中获取字符串 Null

PHP - 从字符串中删除除 <img> 之外的 HTML 标签

php - 动态使用从获取的数据查询数组中获取的列名

php - $.post - 尝试将文本框值回显给 div

php - 通过来自 MySql 数据库的 JSON 在 WP_User_Query 中放置数组

php - 检查用户输入

javascript - 在 html 表单提交后显示隐藏的 div 以显示输出

php - 什么被认为是较长的执行时间?

php - 如何使用 gettext 翻译 MySQL 中的数据?