据我了解,PHP的passthru显示控制台的纯粹输出 - 包括所有输出,如STDERR。我试图从一个PHP文件的javac文件像这样:如何在PHP中使用passthru显示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的呼叫(而不是输出提 - 详细)。然而,当我访问网页时,我注意到两两件事:
code.java成功创建并充满我指定的数据。
该网页的唯一输出是“完成”。
请注意,如果我从cmd提示符调用完全相同的命令,我会得到一整个输出。这里发生了什么?
tl; dr;为什么我没有从passthru()获得任何输出?
编辑:如果我改变中继命令字符串“回声PLEASEWORK”它正确
显示输出,出于某种原因,我不能发表评论 - Quamis,什么是执行这个CMD的首选方法并捕获所有输出?
输出到'STDERR'去Apache的错误日志。您需要将其重定向到'STDOUT'以在浏览器中查看它。 –