Привет, я хотел бы вызвать 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()
не может доставить вывод.