Java 1.6 Сбой при вызове фоновой задачей Symfony

У меня есть задача Symfony, которая генерирует некоторые вызовы exec в jar, а затем анализирует вывод. Консоль отлично работает из командной строки, задача отлично работает из командной строки.

Проблема:

Я вызываю задачу в действии, основанном на представлении формы. У меня есть действие, запускающее новый php-процесс в фоновом режиме для запуска задачи независимо от того, какая страница она породила.

Когда он попадает на вызов java, скажем exec (java -version); он выводит это:

Error occurred during initialization of VM Unable to load native library: libjava.jnilib 

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

Как я могу запустить java из задачи «background» Symfony?

Примечания :

Раньше это работало без задержек, пока я не поднял мачту с 1,9,6 до 2,0,3.

Я смотрел: Broken Java Mac 10.6, но так как я могу запустить его из командной строки, это, похоже, другая проблема.

Я также посмотрел на команду выполнения Execute symfony из разрешения shell_exec (), но я не думаю, что разрешения здесь проблемы.

Обновить:

Я сузил проблему до MAMP и добрался до php из браузера.

 <?php echo exec("java -version") ... 

Будет работать при вызове из командной строки, но не при открытии php-файла через браузер. Таким образом, способ, которым настроен MAMP, вызывает проблему.

Вот информация об окружающей среде:

  • Переменная стоимость
  • SHELL / bin / bash
  • TMPDIR / var / folders / YH / YH + uW3hDHZyxQ5AiUtr0T ++++ TI / -Tmp- /
  • Apple_PubSub_Socket_Render / tmp / launch-3rr9ZI / Render
  • USER myuser
  • COMMAND_MODE unix2003
  • SSH_AUTH_SOCK / tmp / launch-zinaMI / Слушатели
  • __CF_USER_TEXT_ENCODING 0x1F5: 0: 0
  • PATH / usr / bin: / bin: / usr / sbin: / sbin
  • PWD /
  • HOME / Пользователи / myuser
  • SHLVL 2
  • DYLD_LIBRARY_PATH / Приложения / MAMP / Library / lib:
  • LOGNAME myuser
  • DISPLAY /tmp/launch-FYrw70/org.x:0
  • _ / Приложения / MAMP / Library / bin / httpd

Дайлд, кажется, присутствует здесь. Мне нужно найти способ отключить его от среды мама.

решаемая

Я выяснил решение. Это похоже на взлома, но это сработало. Я отправлю его здесь, просто если кто-нибудь еще столкнется с той же проблемой.

Так как Broken Java Mac 10.6 упоминает, что DYLD_LIBRARY_PATH должен быть отменен. Не уверен, почему, похоже, это необходимо для Unix-систем, но не для MacOSX.

Если MAMP устанавливает / Applications / MAMP / Library / lib, вот как отключить его: Edit / Applications / MAMP / Library / bin / envvars и прокомментировать следующие строки

 DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH" export DYLD_LIBRARY_PATH 

Чтобы это выглядело так:

 #DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH" #export DYLD_LIBRARY_PATH 

Это должно устранить проблему, и java 1.6 может работать нормально.

Это взломать? или это ошибка в MAMP? Пожалуйста, ответьте, если вы знаете лучший способ решить эту проблему.

Это решение @paaat добавлено. Я просто отправляю сообщение, чтобы получить этот вопрос из списка без ответа.

Я выяснил решение. Это похоже на взлома, но это сработало. Я отправлю его здесь, просто если кто-нибудь еще столкнется с той же проблемой.

Так как Broken Java Mac 10.6 упоминает, что DYLD_LIBRARY_PATH должен быть отменен. Не уверен, почему, похоже, это необходимо для Unix-систем, но не для MacOSX.

Если MAMP устанавливает / Applications / MAMP / Library / lib, вот как отключить его: Edit / Applications / MAMP / Library / bin / envvars и прокомментировать следующие строки

 DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH" export DYLD_LIBRARY_PATH 

Чтобы это выглядело так:

 #DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH" #export DYLD_LIBRARY_PATH 

Это должно устранить проблему, и java 1.6 может работать нормально.

Обязательно перезапустите установку MAMP, чтобы изменения вступили в силу.

Это сработало! Версия MAMP, которую я запускаю, 2.1.3, однако имеет другое содержимое в файле:

 #if test "x$DYLD_LIBRARY_PATH" != "x" ; then # DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH" #else # DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib" #fi #export DYLD_LIBRARY_PATH 

Это сработало для меня:

 <?php exec('export DYLD_LIBRARY_PATH=""; java -version'); ?> 

Рекомендации:
https://drupal.org/node/1257654
– Вызов java из PHP exec