gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 07:31:36 25 4
gpt4 key购买 nike

据我了解,PHP 的 channel 显示控制台的纯输出 - 包括所有输出,如 STDERR。我正在尝试从 PHP 文件中提取一个文件,如下所示:

<?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我可以清楚地读到“这个函数应该用来代替 exec() 或 system() 当 Unix 命令的输出是二进制数据 需要直接传回浏览器的数据”。这意味着 passthry 不是您完成这项任务的最佳伙伴:)

这不是你的情况......

尝试使用 passthru("your_command_here 2>&1") 来捕获标准输出和标准错误。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com