【问题标题】:Executing Java JAR from PHP will not work从 PHP 执行 Java JAR 将不起作用
【发布时间】:2010-05-17 18:33:57
【问题描述】:

我有一个生成 HTML 文件的 java 程序。 Java程序有两个输入参数:file1和file2,输出文件由“--file=”指定。

当从命令行(UNIX,Mac OS 10.6.2)执行时,它看起来像这样:

"java -jar program.jar http://my.testsite.com/test1.html http://my.testsite.com/test2.html --file=/path/to/jar/new_file_1274119954.html

从命令行执行程序会生成文件“new_file_TIEMSTAMP.html”

现在我想从 PHP 中执行同一行,所以我创建了以下脚本:



$file1 = 'http://my.testsite.com/test1.html';
$file2 = 'http://my.testsite.com/test2.html';
$newFile = '/path/to/jar/new_file_'.time().'.html';


system("java -jar program.jar $file1 $file2 --file=$newFile");

$handle = fopen($newFile, "r");
$output = fread($handle, filesize($newFile));

echo "$output";

如您所见,我对控制台输出并不真正感兴趣,而是对程序生成的文件感兴趣。

我还使用以下调用来执行控制台命令,但从我的浏览器执行此 PHP 脚本时它们都不起作用。

我不确定是否需要在我的 php.ini 中启用一些特殊设置,或者我做错了什么,但我不知道现在该做什么。

感谢您的帮助

警察局:

我在使用 system 调用时收到的一条错误消息如下: javax.xml.transform.TransformerException: org.xml.sax.SAXException: setResult() 必须在 startDocument() 之前调用。

【问题讨论】:

    标签: java php unix exec shell-exec


    【解决方案1】:

    好吧,Java 异常告诉我们其中有一个 XML 异常,所以不妨先看看您的源文件是否有效?从这里很难看出 Java 应用程序的作用。

    另外,我想看看 apache 或 PHP 用户是否有权执行 Java 应用程序并创建文件。

    祝你好运。

    【讨论】:

    • 是权限,这么简单的事情!谢谢
    【解决方案2】:

    我真的不太了解 PHP,但是当你调用 system("java -jar program.jar $file1 $file2 --file=$newFile") 时,它没有评估 $file1$file2 的值,所以你要求它找到一个名为 $file1 的文件,而不是 test1.html ?

    相反,我认为您想要类似的东西

    $cmd = "java -jar program.jar " . $file1 . " " . $file2 . "--file=" . $newFile;
    system($cmd);
    

    【讨论】:

      【解决方案3】:

      假设您遇到与我相同的问题,使用 DaisyDiff,您需要先创建目录,然后才能将文件放入其中。它不会自己创建需要的文件。

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-28
        • 1970-01-01
        • 2015-10-25
        • 2012-08-08
        • 1970-01-01
        • 2015-01-13
        相关资源
        最近更新 更多