1

我有一个生成 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 中启用一些特殊设置,或者我做错了什么,但我不确定现在该怎么做。

感谢您的帮助

PD:

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

4

3 回答 3

2

好吧,Java 异常告诉我们那里有一个 XML 异常,所以也许先看看你的源文件是否有效?从这里很难判断 Java 应用程序的作用。

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

祝你好运。

于 2010-05-17T18:41:09.723 回答
0

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

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

$cmd = "java -jar program.jar " . $file1 . " " . $file2 . "--file=" . $newFile;
system($cmd);
于 2010-05-17T18:40:47.017 回答
0

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

希望这会有所帮助!

于 2011-01-25T23:06:02.910 回答