Решено: MAMP Php не может выполнить exec ('convert') после Homebrew ImageMagick install
Я установил 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 ($ выход);
Не производит ничего (или пустой массив).
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
Открыть/Приложения/MAMP/Library/bin/envvars
И закомментируйте следующие строки:
DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH
Готово.
Ответы
Ответ 1
Добавление моего собственного ответа здесь, чтобы вы могли голосовать:
Это было вызвано 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
sudo ln -s /usr/local/bin/convert /usr/bin/convert
Ответ 3
Убедитесь, что преобразование - это переменная среды PATH сервера. Или просто укажите полный путь:
exec('/usr/local/bin/convert -version');
Ответ 4
exec
возвращает последнюю строку из результата команды, которая является пустой строкой.
Если вы хотите получить результат, просто выполните что-то вроде этого:
exec('convert -version', $output);
var_dump($output); // it is an array which filled with every line of output from the command
Ответ 5
Просто используйте exec("PATH=\$PATH:/usr/local/bin; convert file.pdf file.png");
Он добавит преобразование в PATH во время выполнения.
Ответ 6
вместо просто exec ( "convert...." );
используйте полный путь. вы можете получить его, набрав терминал
преобразовать тип
вы должны получить что-то вроде:
convert hashed (/opt/local/bin/convert)
теперь используйте:
exec ( "/opt/local/bin/convert...." );
[кредиты @Nikki]
после этого комментария
DYLD_LIBRARY_PATH = "/Applications/MAMP/Library/Библиотека: $DYLD_LIBRARY_PATH" экспорт DYLD_LIBRARY_PATH
in/Applications/MAMP/Library/bin/envvars