【问题标题】:Using PHP's exec() function (or the likes), how can you display terminal error output? [duplicate]使用 PHP 的 exec() 函数(或类似函数),如何显示终端错误输出? [复制]
【发布时间】:2011-11-23 09:12:11
【问题描述】:

可能重复:
How can I know the error in command in an exec function?

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

例如: 如果你使用这段代码在终端执行...

gcc -o try try.c

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

  • try.c 在函数'main'中:
  • try.c:27 'x' 未声明(在此函数中首次使用)
  • try.c:27(每个未声明的标识符只报告一次
  • try.c:27 为它出现的每个函数。)

同时,使用这个 PHP 代码...

<?php exec("gcc -o try try.c"); ?>

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

非常感谢。

【问题讨论】:

  • 有 STDOUT 和 STDERR。您描述的输出最有可能在 STDERR 上。捕获 STDERR 并返回它。
  • @hakre 重复的重复
  • 使用 proc_open() 获取 STDERR 的管道。

标签: php compiler-errors terminal web


【解决方案1】:

正如@hakre 在 cmets 中所指出的那样 - 您可以简单地重定向 STDERR 流,但这是另一种解决方案:

exec('command here', $output, $exit_status);
if ($exit_status !== 0) echo implode('<br />', $output);

如果执行成功 - 每个程序都应该返回退出状态 0 并且任何其他代码都应该意味着某种错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 2022-12-31
    相关资源
    最近更新 更多