PHP исполняет команды оболочки, dyld: библиотека не загружена: /usr/lib/libxml2.2.dylib - PullRequest
0 голосов
/ 16 июня 2011

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

dyld: библиотека не загружена: /usr/lib/libxml2.2.dylib Ссылка на: / System / Library / Frameworks / CoreServices.framework / Версии / A / Frameworks / DictionaryServices.framework / Версии / 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

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

Спасибо, MS

1 Ответ

0 голосов
/ 16 июня 2011

Разобрался, что происходит.

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

окр

Как из моего терминала, так и из моего 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.

...