2016-01-15 2 views
0

Я пытался запустить JAR-файл, который будет считывать из input.txt и записывать output.txt таким образом, в консоли:Не удается запустить Java от Exec РНР

java -jar file.jar input.txt output.txt 

И это работает 100% штрафа на мой машина. Мне нужно, чтобы запустить его внутри PHP скрипт, и этот код работает 100% штрафа для меня (Mac OS, PHP встроенный сервер):

exec("java -jar file.jar input.txt output.txt"); 

Но когда я развернуть его (сервер CentOS), где функция exec разрешено, оно терпит неудачу, оно возвращает пустую строку, а банка не работает, ее запуск непосредственно из оболочки в порядке.

Как это исправить? Спасибо заранее!

+0

выполняет ли пользователь скрипт php, так как имеет разрешение на чтение/запись каталога, в котором находится этот материал? просто потому, что он работает для вас в командной строке, это мало значит. это другой пользователь, в совершенно другой среде. –

+0

Во-первых, я не поклонник exec, учитывая последствия для безопасности. Сказав это, попробуйте использовать полный путь к исполняемому файлу 'java' и файлы в этой команде и посмотрите, работает ли это. –

+0

@MarcB да, пользователь Apache такой же, как пользователь, под которым я выполнил это из консоли (на этом сервере), и он отлично работал –

ответ

-1

Проблема с вашим exec() в том, что PHP не знает, где Java находится на сервере. Обновите свою команду, чтобы указать полный путь к исполняемому файлу Java, и он должен работать, хотя вы также должны использовать полные пути к банку и текстовым файлам, пока вы на нем.

Смежные вопросы