Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中使用passthru显示javac错误消息?_Java_Php_Stdout_Javac_Stderr - Fatal编程技术网

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

如何在PHP中使用passthru显示javac错误消息?,java,php,stdout,javac,stderr,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 {

据我所知,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");
    }
?> 

正如您可能猜到的,“aaaaaaaaa”不应该编译——我期望javac调用的输出(更不用说-verbose了)。然而,当我访问网页时,我注意到两件事:

  • java已成功创建并填充了我指定的数据

  • 网页的唯一输出是“完成”

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

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

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


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

    在man文件中,我可以清楚地读到“当Unix命令的输出是二进制数据,需要直接传回浏览器时,应使用此函数代替exec()或system()”。这意味着Pasthry不是此任务的最佳朋友:)

    这不是你的情况


    尝试使用
    passthru(“您的_命令\u here 2>&1”)
    捕获stdout和stderr。

    如上所述,到
    stderr的输出将转到Apache的日志文件。要在浏览器中“查看”,您需要将其重定向到标准输出:

    $command = "javac -verbose code.java 2>&1";
    $result = passthru($command);
    

    这被称为。

    输出到
    STDERR
    进入Apache的错误日志。您需要将其重定向到
    STDOUT
    才能在浏览器中看到它。Billybob出于某种原因无法发表评论,他问您:“执行此cmd并捕获所有输出的首选方法是什么?”
    exec(“您的_命令_here 2>&1”)
    应该以“首选”的方式执行此命令,这是Billybob的问题;-)我只是想在我将他的帖子标记为非答案之前转达一下他的话。@Arsen7,对不起,现在我看到了你的评论:)奇怪的是,他甚至还有同一个头像……谢谢Quamis&Arsen7,我一有机会就会尝试!