ImageMagick работает в командной строке, но когда exec () в php возвращает 5 с «несовместимой версией библиотеки» - PullRequest
7 голосов
/ 18 октября 2011

У меня странная проблема с php 5.3.6 и ImageMagick (командная строка) с использованием MAMP (и Macports тоже ... Я пробовал оба) на OS X.

Когда я запускаю команду идентификации изCLI, он отлично работает.Но когда я запускаю ту же самую команду, используя exec(), она возвращает код значения 5, и в журналах ошибок apache у меня есть:

dyld: Библиотека не загружена: / opt / local/lib/libfreetype.6.dylib
Ссылка на: / opt / local / bin / identifier Причина: несовместимая версия библиотеки: для идентификации требуется версия 14.0.0 или более поздняя, ​​но libfreetype.6.dylib предоставляет версию 13.0.0

Например, команда cli: /opt/local/bin/identify /Users/leonardteo/Documents/1.jpg

Это прекрасно работает при выполнении из командной строки.При выполнении из PHP:

exec("/opt/local/bin/identify /Users/leonardteo/Documents/1.jpg", $output, $return);

$return - 5

$output - ничто

Проверка журналов apache даетвыше проблема с libfreetype.

Я установил ImageMagick, используя Macports.Я также пробовал ручную сборку из источника и запуск идентификации из /usr/local/bin/identify, и я получаю тот же результат.Я также попытался запустить PHP из Macports вместо MAMP, и я получил тот же результат.

Может кто-нибудь помочь пролить свет на это?

1 Ответ

17 голосов
/ 19 октября 2011

Редактировать этот файл:

/ Applications / MAMP / Библиотека / bin / envvars

Закомментировать следующие строки:

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

export DYLD_LIBRARY_PATH

...