Maskavas Briesmonis (moscow_beast) wrote in ru_mac,
Maskavas Briesmonis
moscow_beast
ru_mac

Category:

На заметку вэб-разработчику: добавление модулей в системный php на OS X El Capitan и macOS Sierra

Видимо мало кто пользуется той версией php что поставляется с macOS, и предпочитает использовать MAMP или устанавливать нужные версии php из homebrew. Ну а я лично предпочел не плодить сущностей и использовать то что предлагает Apple по умолчанию, тем более версия php в macOS Siera соответствует версии php в Debian Jessy, что не может не радовать, так как именно эта версия стоит у меня на сервере. Правда вышел казус: хотя php в macOS довольно хорошо укомплектован, но некоторых вещей в нем нет. В моем случае модуля mcrypt не оказалось. Как выяснилось мануалов по доустановке модулей в php конкретно под macOS выгуглить достаточно сложно. В принципе это делается так-же как в общем случае для других юникс систем, но с парой зловредных моментов специфичных для мака и конкретно El Capitan и Sierra. Набив шишек при переходе на Капитана, я благополучно забыл об этой процедуре до установки Сьерры, и шишки пришлось набивать заново так как мануала так и не было. Так что составляю инструкцию для тех кому это может понадобится, и видимо будущему себе из сентября 2017 года. Рассказываю на примере mcrypt, но должно получится и с другими модулями. Естественно все происходящее делается в терминале.
Сначала нам нужно поставить то что понадобится для сборки софта из исходных кодов, это первая особенность macOS:
xcode-select --install
Далее надо установить (если еще не установлен), или починить после обновления homebrew. В любом случае нам оно надо. Далее надо поставить зависимости для нашего модуля, в случае mcrypt, это как не странно mcrypt:
brew install mcrypt
Далее выкачиваем исходники php соответствующие версии в macOS (для Sierra это 5.6.24). На php.net чуть устаревшие версии найти не всегда просто, так что подсказываю: http://php.net/releases/#5.6.24
На случай если вы забыли как распаковывать юниксовые архивы:
tar -xvf ~/Downloads/php-5.6.24.tar.bz2
Заходим в каталог с исходниками нужного модуля, и делаем phpize
cd php-5.6.24/ext/mcrypt/
phpize
должно получиться что-то вроде:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226
Дальше все как у людей:
./configure
make
А вот make install и даже sudo make install у вас не получится, ибо тут идет главный нюанс El Capitan и Sierra, о котором вечно забывают упомянуть: System Integrity Protection - то что охраняет ваш мак от особенно опасных зловредов. Придется отключать (на время).
Для этого перезагружаемся, и при загрузке зажимаем Command+R, и попадаем в режим восстановления. Запускаем из меню утилиты "Терминал", в нем даем команду:
csrutil disable
После чего перезагружаемся в обычном режиме, возвращаемся в терминале к нашему модулю и инсталлируем его:
sudo make install
После чего снова презагружаемся в режим восстановления и возвращаем на место System Integrity Protection:
csrutil enable
Перезагружаемся снова. Теперь модуль mcrypt стал полноправной частью системы. А мы правим php.ini (который, кстати, мог потеряться при обновлении, так что не забывайте бэкапить конфиги apache и php) для прописывания нового модуля. Как править конфиг - это уже другая история, но я подозреваю что если вы работаете с php то и с его конфигурированием справитесь. Хотя, конечно, можете обращаться.

P.S. Комментарии типа "А почему-бы не поставить MAMP (или типа того) и не мучаться?" - будут проигнорированы с особым презрением.
Tags: sierra, разработка|программирование
Subscribe
  • Post a new comment

    Error

    Comments allowed for members only

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 2 comments