Я думаю, все изменилось в апреле 2018 года. Homebrew больше не действует как менеджер пакетов для PHP, поэтому все вещи php-imagick
, php-redis
и php-other-extension
исчезли, и теперь вы должны управлять пакетами PHP, используя pecl
, как и все остальные делает.
Итак, как получить Imagick под PHP? Обратите внимание, что Imagick и ImageMagick - это две разные вещи:
- ImageMagick - это полный набор ImageMagick
- Imagick просто PHP-привязка
Вот шаги - если кто-то знает лучше или какие-либо улучшения, дайте мне знать через комментарий, и я буду обновлять.
Шаг 1 - Удалить все, что может конфликтовать
Перед началом работы лучше всего очистить все, что сломано или не нужно. Сделайте столько, сколько вам удобно:
brew rm php php@5.6 php@7.0 php@7.1
brew rm imagemagick
Шаг 2 - Обновите инструменты командной строки Xcode и получите пакеты сборки
Убедитесь, что вы установили инструменты командной строки Xcode с:
xcode-select --install
Перейдите в AppStore и нажмите Updates и обновите все пакеты, связанные с Xcode, особенно если вы недавно обновили macOS.
Установка доморощенных строительных инструментов:
brew install pkg-config
Шаг 3 - Установите ImageMagick
Проверьте, какие опции ImageMagick вы хотите использовать:
brew options imagemagick
Мне нравится использовать:
brew install imagemagick --with-x11 --with-librsvg --with-openexr --with-pango
hash -r
но вам может понравиться установка vanilla:
brew install imagemagick
hash -r
Шаг 4 - Установить доморощенный PHP
Далее установите версию PHP homebrew с:
brew install php
hash -r # Update bash's internal paths
Теперь критически убедитесь, что вы используете правильный homebrew PHP:
type php
Если это говорит вам:
/usr/local/...anything.../php
у вас homebrew PHP и вы можете перейти к следующему шагу.
Если он говорит вам:
/usr/bin/php
вы используете PHP от Apple. Если это то, что вы хотите запустить, игнорируйте весь мой ответ, который основан на том, что вы хотите использовать homebrew PHP. Если вы получили этот ответ, но хотите запустить homebrew PHP, ваш PATH установлен неправильно. Вам нужно поставить /usr/local/bin
перед /usr/bin
, чтобы забрать все пакеты homebrew перед программами Apple, т.е.
export PATH=/usr/local/bin:$PATH
Этот шаг дает вам также pecl
- менеджер пакетов PHP - так как он является частью homebrew PHP.
Шаг 5 - Установите Imagick
Теперь вы можете установить Imagick с pecl
:
pecl install imagick
Если что-то пойдет не так, вот несколько вопросов и ответов ...
Q1. Как я могу найти, где находится мой php.ini
файл?
Попробуйте любую из следующих команд:
pecl config-get php_ini # I get "/usr/local/etc/php/7.2/php.ini"
brew info php
php -i | grep "Loaded Configuration" # I get "Loaded Configuration File => /usr/local/etc/php/7.2/php.ini"
Q2. Как я могу найти, где pecl
устанавливает модули?
pecl config-get ext_dir # I get "/usr/local/lib/php/pecl/20170718"
Q3. Как узнать, какие модули PHP загружены?
php -m
Q4. Почему PHP не может найти мой модуль?
Сначала найдите каталог модулей, используя Q2. Мне нравится помещать это в буфер обмена с помощью:
pecl config-get ext_dir | pbcopy
Затем отредактируйте файл php.ini
из Q1. Я использую vi
, поэтому я бы сделал:
vi "$(pecl config-get php_ini)"
Затем найдите строку в этом файле, которая выглядит следующим образом:
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
и затем (используя содержимое буфера вставки) сделайте следующую строку похожей на эту (без точки с запятой в начале):
extension_dir = "/usr/local/lib/php/pecl/XXXXXX"
на моей машине XXXXXX
равно 20170718
. Если вы понимаете это правильно, любые и все модули, которые вы устанавливаете через pecl
, будут видны вашему homebrew PHP.
В5. Как я могу увидеть все мои настройки PHP?
Проверьте конфигурацию, версии и настройки PHP:
php -i
Надеюсь, это поможет!