我有一个生成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";
您可以看到,我对控制台输出并不感兴趣,而是对程序生成的文件感兴趣。
我还使用以下调用来执行console命令,但是当我从浏览器执行这个PHP脚本时,它们都不起作用。
我不确定我的php.ini中是否需要启用一些特殊设置,或者我做错了什么,但我不知道现在该做什么。
感谢您的帮助
PD:
使用系统调用时,我收到的一条错误消息如下: javax.xml.transform.TransformerException:org.xml.sax.SAXException:必须在startDocument()之前调用setResult()。 的
答案 0 :(得分:2)
嗯,Java异常告诉我们那里有一个XML异常,所以可能先看看你的源文件是否有效?从这里很难说出Java应用程序的作用。
此外,我还要看看apache或PHP用户是否有权执行Java应用程序并创建文件。
祝你好运。答案 1 :(得分:0)
我真的不太了解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);
答案 2 :(得分:0)
假设您遇到了与我一样的问题,使用DaisyDiff,您需要在将文件放入其中之前创建目录。它不会自己创建所需的文件。
希望这会有所帮助!