У меня есть задача Symfony, которая генерирует некоторые файлы, вызывает exec для jar, а затем анализирует вывод.Jar работает нормально из командной строки, задача выполняется из командной строки.
Проблема:
Я вызываю задачу в действии, основанном на формепредставление.У меня есть действие, запускающее новый php-процесс в фоновом режиме, чтобы запустить задачу независимо от того, какую страницу она порождает.
Когда он достигает вызова java, произнесите exec (java -version);он выводит это:
Error occurred during initialization of VM
Unable to load native library: libjava.jnilib
Я чувствую, что это связано с тем, как я вызываю php, когда запускаю задачу, но я заблудился, почему у него не будет таких библиотек, как когдаиспользуйте командную строку.
Как запустить Java из «фоновой» задачи Symfony?
Примечания :
Используется для работы снет проблем, пока я не обновил mamp с 1.9.6 до 2.0.3.
Я смотрел на: Сломанный Java Mac 10.6 , но, поскольку я могу запустить его из командной строки, кажется,это может быть другой проблемой.
Я также рассмотрел Выполнить команду задачи symfony из запрета shell_exec (), отклонено , но я не думаю, что разрешения - это проблема здесь.
Обновление:
Я сузил проблему до MAMP и доступа к php из браузера.
<?php
echo exec("java -version")
...
Будет работать при вызове из командыстрока, но не когда файл php открывается через браузер.Таким образом, способ настройки MAMP вызывает проблему.
Вот информация об окружении:
- Значение переменной
- SHELL / bin / bash
- TMPDIR / var / folder / YH / YH + uW3hDHZyxQ5AiUtr0T ++++ TI / -Tmp - /
- Apple_PubSub_Socket_Render / tmp / launch-3rr9ZI / Render
- USER myuser * 1050COMMAND_MODE unix2003
- SSH_AUTH_SOCK / tmp / launch-zinaMI / Listeners
- __ CF_USER_TEXT_ENCODING 0x1F5: 0: 0
- PATH / usr / bin: / bin: / usr / sbinsbin
- PWD /
- ГЛАВНАЯ / Пользователи / myuser
- SHLVL 2
- DYLD_LIBRARY_PATH / Приложения / MAMP / Библиотека / lib:
- LOGNAME myuser
- DISPLAY /tmp/launch-FYrw70/org.x:0
- _ / Applications / MAMP / Library / bin / httpd
Кажется, Дилдуприсутствовать здесь.Мне нужно найти способ удалить его из среды мэмпа.
Решено
Я нашел решение.Это похоже на взлом, но это сработало.Я опубликую это здесь, только если кто-то еще столкнется с той же проблемой.
Как Сломанный 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?Пожалуйста, ответьте, если вы знаете лучший способ решить эту проблему.