Выполнение Java-файла .jar с помощью php - PullRequest
1 голос
/ 02 июля 2011

Я создал файл .jar, который объединяет два волновых файла. Я вызываю его с помощью командной строки следующим образом.

java -jar WaveAppender.jar 1.wav 2.wav out.wav

Я пытаюсь использовать php для выполнения этого файла .jar, но приведенный ниже код не работает

$theFiles = Array("1.wav","2.wav","output.wav");
exec("java -jar WaveAppender.jar $theFiles");

Я не получаю никаких ошибок, но out.wav не пишется.

Я неправильно называю exec ()?

Ответы [ 2 ]

4 голосов
/ 02 июля 2011

Вы не можете использовать массивы напрямую в строке.Результирующая командная строка, которая будет сгенерирована:

3 голосов
/ 02 июля 2011

Здесь нужно помнить несколько вещей:

  1. Многие хостинг-провайдеры считают exec опасным вызовом функции.По этой причине он может быть недоступен на вашем сервере.Для получения дополнительной информации о проверке того, включен ли exec в вашей системе, см. это обсуждение .

  2. Ваши файлы хранятся в массиве.Учитывая код, который вы разместили, вы фактически передаете эту строку в exec:

    java -jar WaveAppender.jar Array

    Чтобы исправить это, попробуйте использовать implode, чтобы объединить все элементы массива встрока, например, так:

    exec('java -jar WaveAppender.jar ' . implode(' ', $theFiles));

    Для получения дополнительной информации о implode см. Документы PHP .

  3. Помните, что exec возвращает значение, и вы также можете передать массив, который будет заполнен всеми результатами программы.Это было бы полезно для обработки ошибок в вашем веб-приложении.Для получения дополнительной информации о exec см. документы PHP .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...