Выполнение Java JAR из PHP не будет работать - PullRequest
1 голос
/ 17 мая 2010

У меня есть Java-программа, которая генерирует HTML-файл. Программа на 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';


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

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

echo "$output";

Как видите, меня не интересует вывод консоли, а скорее файл, сгенерированный программой.

Я также использовал следующие вызовы для выполнения команды консоли, но ни один из них не работает при выполнении этого сценария PHP из моего браузера.

Я не уверен, есть ли какие-то специальные настройки, которые мне нужно включить в моем php.ini, или это что-то, что я делаю неправильно, но я не уверен, что делать сейчас.

Ваша помощь приветствуется

PD:

Я получаю одно сообщение об ошибке при использовании system : javax.xml.transform.TransformerException: org.xml.sax.SAXException: setResult () должен быть вызван до startDocument ().

Ответы [ 3 ]

2 голосов
/ 17 мая 2010

Хорошо, исключение Java говорит нам, что там есть исключение XML, так что, возможно, начните с проверки правильности исходного файла? Отсюда трудно сказать, что делает приложение Java.

Кроме того, я бы посмотрел, есть ли у apache или пользователя PHP разрешение на запуск приложения Java и создание файлов.

Удачи.

0 голосов
/ 26 января 2011

Предполагая, что вы столкнулись с той же проблемой, что и я, используя DaisyDiff, вам нужно создать каталог, прежде чем в него можно будет поместить файл. Он не будет создавать нужные файлы сам по себе.

Надеюсь, это поможет!

0 голосов
/ 17 мая 2010

Я действительно не очень разбираюсь в 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);
...