Решено: MAMP Php не может выполнить (конвертировать) после установки Homebrew ImageMagick - PullRequest
15 голосов
/ 23 августа 2011

Я установил Imagemagick с помощью Homebrew на Lion, все хорошо, за исключением того, что он вообще не работает при вызове из php.Консоль:

$ convert -version
Version: ImageMagick 6.7.1-1 2011-07-29 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2011 ImageMagick Studio LLC
Features: OpenMP   

$ which convert
/usr/local/bin/convert

PHP:

echo exec ('convert -version');

или exec ('convert -version', $ output);var_dump ($ output);

Ничего не генерирует (или пустой массив).

exec ('/usr/local/bin/convert') // works, but
exec ('which convert') // doesn't

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

Разрешено:

Оказывается, для работы php convert должно быть в /usr/bin/ так это решило это:

ln -s /usr/local/bin/convert /usr/bin/convert

Обновление

Это было из-за MAMP, вот исправление: http://firedevcom.tumblr.com/post/22791937644/fix-for-homebrew-imagemagick-and-mamp

Открыть /Applications / MAMP / Library / bin / envvars

И закомментируйте следующие строки:

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

Готово.

Ответы [ 6 ]

6 голосов
/ 03 июня 2013

Добавление моего собственного ответа здесь, чтобы вы могли проголосовать:

Это было вызвано MAMP, вот исправление: http://firedevcom.tumblr.com/post/22791937644/fix-for-homebrew-imagemagick-and-mamp

Открыть /Applications/MAMP/Library/bin/envvars

Изакомментируйте следующие строки:

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

Готово.

2 голосов
/ 20 июня 2012
sudo ln -s /usr/local/bin/convert /usr/bin/convert
1 голос
/ 11 июня 2013

вместо просто exec ("convert ...."); использовать полный путь. вы можете получить его, набрав в терминале

тип преобразования

вы должны получить что-то вроде: конвертировать хэши (/ opt / local / bin / convert)

так что теперь используйте:

exec ("/ opt / local / bin / convert ....");

[кредиты @Nikki]

после этого комментария

DYLD_LIBRARY_PATH = "/ Applications / MAMP / Библиотека / Библиотека: $ DYLD_LIBRARY_PATH" экспорт DYLD_LIBRARY_PATH

in / Applications / MAMP / Library / bin / envvars

1 голос
/ 05 июля 2012

Просто используйте exec("PATH=\$PATH:/usr/local/bin; convert file.pdf file.png"); Это добавит конвертирование в PATH во время выполнения.

1 голос
/ 23 августа 2011

exec возвращает последнюю строку из результата команды, которая оказывается пустой строкой. Если вы хотите получить вывод, просто сделайте что-то вроде этого:

exec('convert -version', $output);
var_dump($output); // it is an array which filled with every line of output from the command
1 голос
/ 23 августа 2011

Убедитесь, что преобразование является переменной окружения PATH сервера. Или просто укажите полный путь:

exec('/usr/local/bin/convert -version');
...