Столкнулся с необходимостью установить Intl на своем маке. Единой корректной инструкции в интернете не нашлось, поэтому решил написать свою.
Предполагается, что у вас уже установлен
В El Capitan появилась такая штука как SIP (System Integrity Protection) или «Защита целостности системы». Эта защита ограничивает ваши действия в системе даже если вы root. Она запрещает вносить изменения в ряд системных папок, поэтому ее нужно временно отключить.
Итак, начнем установку.
Первым делом что нужно сделать — это установить ICU. Для этого выполняем:
1 2 |
brew update brew install icu4c |
Скопируйте или запомните путь к установленной библиотеке. У меня это было:
1 |
/usr/local/opt/icu4c |
Также необходимо установить Pear.
Переходим в папку /usr/lib/php и выполняем установку pear, а также обновляем каналы:
1 2 |
sudo php install-pear-nozlib.phar sudo pecl update-channels |
Установщик pear нас также попросил прописать его в include_path в файле /etc/php.ini. Так и сделаем.
Добавляем следующую строчку в /etc/php.ini:
1 |
include_path=".:/usr/lib/php/pear" |
Для установки Intl нам потребуется еще autoconf.
1 |
brew install autoconf |
Наконец-то мы можем установить intl:
1 |
sudo pecl install intl |
Во время установки, конфигуратор спросит путь к ICU, который мы ставили в начале. Не забудьте указать его. Ждем, пока скомпилируется библиотека.
После завершения мы должны увидеть что-то такое:
1 2 3 4 5 |
Build process completed successfully Installing '/usr/lib/php/extensions/no-debug-non-zts-20121212/intl.so' install ok: channel://pecl.php.net/intl-3.0.0 configuration option "php_ini" is not set to php.ini location You should add "extension=intl.so" to php.ini |
Все что остается — это добавить
1 |
extension=intl.so |
в /etc/php.ini
Проверьте, что пакет успешно установился командой
1 |
php -m | grep intl |
Вы должны увидеть надпись intl
.
P. S. Если вы отключали SIP, то не забудьте его включить. Последовательность действия такая же, только в терминале необходимо ввести команду
1 |
csrutil enable |