Решено: 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