Назад | Перейти на главную страницу

Вызов двоичного файла Java из PHP невозможен

Привет, я хотел бы вызвать java с помощью функции PHP exec (), но она не работает (нет вывода, например, exec('/usr/bin/java -version').

Я запускаю apache с PHP как Fast-CGI (с fcgid) на debian wheezy.

Бинарный файл java доступен в / usr / bin / java и может быть вызван из командной строки, например. '/ usr / bin / java -version' возвращает ожидаемую информацию.

Вызов этого в контексте пользователя apache / suexec также работает из командной строки (sudo -u www-data / usr / bin / java -version).

Но вызывается из PHP usig exec() или проверил с is_executable('/usr/bin/java') не работает.

Что мне не хватает?

Я отвечу на свой вопрос здесь. Оказалось, есть 2 разные проблемы.

1) Сначала банально, про активный забыл open_basedir настройка, которая не включала /usr/bin каталог. Но в любом случае даже после его включения /usr/bin/java стиль не был исполняемым в соответствии с PHP is_executable(). Поэтому мне пришлось отключить эту функцию, что не критично в моем случае с локальным сервером DEV. Может быть, у кого-то есть идея, как сделать его исполняемым с помощью open_basedir устанавливать.

2) Вторая проблема странная, но факт :-) Вызов "java -version" по какой-то странной причине записывает не в STDOUT, а в STDERR, поэтому PHP exec() не может доставить вывод.