使用PHP';s exec()函数(或类似函数),如何显示终端错误输出?

使用PHP';s exec()函数(或类似函数),如何显示终端错误输出?,php,compiler-errors,terminal,web,Php,Compiler Errors,Terminal,Web,可能重复: 我只是想知道是否有一种方法(使用PHP)将编译错误信息从终端输出到浏览器 例如: 如果您使用此代码在终端中执行 gcc-o try.c …并假设“try.c”有一些错误。 终端将输出如下内容: try.c在函数“main”中: try.c:27'x'未声明(首次在此函数中使用) try.c:27(每个未声明的标识符只报告一次 try.c:27用于它出现在中的每个函数。) 同时,使用此PHP代码 浏览器不会像终端那样返回任何输出。是否有一种直接或间接的方式可以将终端显示的错误详

可能重复:

我只是想知道是否有一种方法(使用PHP)将编译错误信息从终端输出到浏览器

例如: 如果您使用此代码在终端中执行

gcc-o try.c

…并假设“try.c”有一些错误。 终端将输出如下内容:

  • try.c在函数“main”中:
  • try.c:27'x'未声明(首次在此函数中使用)
  • try.c:27(每个未声明的标识符只报告一次
  • try.c:27用于它出现在中的每个函数。)
同时,使用此PHP代码

浏览器不会像终端那样返回任何输出。是否有一种直接或间接的方式可以将终端显示的错误详细信息传递到浏览器上


非常感谢。

正如@hakre在评论中指出的那样-您可以简单地重定向STDERR流,但这里有另一个解决方案:

exec('command here', $output, $exit_status);
if ($exit_status !== 0) echo implode('<br />', $output);
exec('command here',$output,$exit_status);
如果($exit_status!==0)回波内爆('
',$output);

如果执行成功-每个程序应返回退出状态0,任何其他代码应表示某种错误。

有STDOUT和STDERR。您描述的输出很可能在STDERR上。捕获STDERR并返回它。@hakre duplicate的副本用于获取STDERR的管道。