java - 如何在 PHP 中使用 passthru 显示 javac 错误消息?

标签 java php stdout javac stderr

据我了解,PHP 的 passthru 显示控制台的纯粹输出 - 包括所有输出,例如 STDERR。我正在尝试从 PHP 文件 javac 文件,如下所示:

<?php
error_reporting(E_ALL);

    if(file_put_contents("code.java", "aaaaaa"))
    {
        passthru("javac -verbose code.java");
        echo("Done.");
    }
    else
    {
        echo("UNEXPECTED PHP ERROR");
    }
?> 

正如您可能猜到的那样,“aaaaaaa”不应该编译 - 我期望从 javac 调用输出(更不用说 -verbose)。但是,当我访问该网页时,我注意到两件事:

  1. code.java 已成功创建并填充了我指定的数据。

  2. 网页的唯一输出是“完成”。

请注意,如果我从 cmd 提示符调用完全相同的命令,我会得到大量输出。这是怎么回事?

tl;博士;为什么我没有从 passthru() 获得任何输出?

编辑:如果我将 passthru 命令字符串更改为“echo PLEASEWORK”,它会正确显示输出


出于某种原因我无法发表评论 - Quamis,执行此命令并捕获所有输出的首选方法是什么?

最佳答案

在 man 文件中http://php.net/manual/en/function.passthru.php我可以清楚地读到“当 Unix 命令的输出是二进制数据,需要直接传递回浏览器时,应该使用此函数代替 exec() 或 system()”。这意味着 passthry 不是您执行此任务的最佳 friend :)

这不是你的情况...

尝试使用 passthru("your_command_here 2>&1") 捕获 stdout 和 stderr。

关于java - 如何在 PHP 中使用 passthru 显示 javac 错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7253535/

相关文章:

php - 从 Android 上传图像到服务器不起作用

python - 是否可以在不使用 Python 中的打印功能的情况下进行打印?

c++ - 在 C++ 中重定向 bash stdin 和 stdout

java - android - 无法实例化 Activity - ClassNotFound - 在一个 eclipse 上失败但在其他 eclipse 上失败

java - 为什么 Java 的列表有 "List.toArray()",而数组没有 "Array.toList()"?

java - 从 Java 运行的 Groovy 脚本是否具有相同的类路径?

php - 使用 SWFupload 或 Uploadify 时,是否需要编辑 php.ini 设置?

带有电子邮件验证问题的 php preg_match

Node.js 标准输出编码问题

java - 在 Gradle 中 hibernate