【发布时间】:2011-08-31 06:53:36
【问题描述】:
据我了解,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)。但是,当我访问网页时,我注意到两件事:
code.java 创建成功,填充了我指定的数据。
网页的唯一输出是“完成”。
请注意,如果我从 cmd 提示符调用完全相同的命令,我会得到一大堆输出。这是怎么回事?
tl;博士;为什么我没有从 passthru() 得到任何输出?
编辑:如果我将 passthru 命令字符串更改为“echo PLEASEWORK”,它会正确显示输出
由于某种原因,我无法发表评论 - Quamis,执行此 cmd 并捕获所有输出的首选方法是什么?
【问题讨论】:
-
输出到
STDERR进入 Apache 的错误日志。您需要将其重定向到STDOUT才能在浏览器中看到它。
标签: java php stdout javac stderr