php выполнить команды оболочки, dyld: библиотека не загружена: /usr/lib/libxml2.2.dylib

Я пытаюсь использовать исполняемый файл wkhtmltopdf для преобразования некоторого html в pdf. Я просто тестирую его на своем Mac, и если я запускаю исполняемый файл через терминал, он работает нормально. Если я запускаю его с помощью php shell_exec, я получаю следующую ошибку:

dyld: библиотека не загружена: /usr/lib/libxml2.2.dylib Ссылка из: /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices Причина: несовместимая версия библиотеки : DictionaryServices требует версию 10.0.0 или более позднюю, но libxml2.2.dylib предоставляет версию 9.0.0.

Если я выплюну cmd, который я использую через php, я смогу запустить его, и он отлично работает в терминале.

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

PATH=$PATH:/usr/local/sbin:/Applications/MAMP/Library/bin:/Applications/MAMP/bin/php5/bin:/usr/local/bin:/opt/local/bin:/opt/local/sbin:/opt/subversion/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin; ./wkhtmltopdf-0.9.9-OS-X.i368 ./'newxhtml.html' /tmp_pdf.pdf

Любые мысли о том, что я могу делать неправильно?

Спасибо, МС


person Mark Steudel    schedule 16.06.2011    source источник


Ответы (1)


Разобрался в чем дело.

Сначала для устранения неполадок я выполнил команду:

окружение

Как с моего терминала, так и с моего php-скрипта.

Я заметил в своем php-скрипте, что в нем явно установлено следующее:

DYLD_LIBRARY_PATH=/некоторые/путь

Но в терминале это значение вообще не было установлено. Итак, все, что я сделал, это добавил:

DYLD_LIBRARY_PATH="";

Вот моя последняя команда: DYLD_LIBRARY_PATH="";./wkhtmltopdf-0.9.9-OS-X.i368 ./'newxhtml.html' ./tmp_pdf.pdf 2>&1

И я просто запускаю его через shell_exec.

person Mark Steudel    schedule 16.06.2011