Я работаю над сценарием, который вызывает Java-приложение Imagej для обработки изображения, загруженного с веб-страницы PHP.
Проблема возникает, когда команда PHP shell_exec вызывает приложение.
Структура была протестирована в Windows и работала правильно.
Однако при попытке реализовать в linux shell_exec останавливает скрипт php и продолжает загружаться вечно. В том же shell_exec «java -version» работал, но вызов jar не работал.
команда shell_exec:
java -Xmx512m -Dplugins.dir="/var/www/ImageJ/" -jar "/var/www/ImageJ/ij.jar" -batch "/var/www/ImageJ/macros/[macrofile]" [imagefile.jpeg]
Однако, когда я пытаюсь запустить php из консоли, он запускается.
php > shell_exec("java -Xmx512m -Dplugins.dir=\"/var/www/ImageJ/\" -jar \"/var/www/ImageJ/ij.jar\" -batch \"/var/www/ImageJ/macros/melaTest.ijm\" F15274739305711.jpeg");
Может ли это быть проблема с php.ini или пользователем?
Проблема была исправлена.
Эта проблема была связана с графическим интерфейсом ImageJ, поэтому приложение ожидало запуска виртуального экрана из shell_exec.
Для решения этой проблемы был установлен Xvfb (sudo apt install xvfb), и команда из php shell_exec была вызвана из команды «xvfb-run» для выполнения на виртуальном сервере.
xvfb-run -a -s "-screen 0 1024x768x24" java -Xmx512m -Dplugins.dir="/var/www/ImageJ/" -jar "/var/www/ImageJ/ij.jar" -batch "/var/www/ImageJ/macros/[macro...] [arg]
Других решений пока нет …