2016-03-26 13:42:13

Установка расширений PHP в Mac OS X

В мемориз PHP Mac OS

Как известно, в Mac OS X уже есть и apache и PHP, но что делать если требуется добавить какое-либо расширение в PHP? Можно, конечно, воспользоваться brew и получить еще одну параллельную версию PHP, а потом мучиться с ее настройкой, ради одного расширения. Я же опишу более правильный путь - собрать расширение для уже имеющегося в системе PHP.


Описание на примере mcrypt, который мне понадобился при установке laravel. Фактически ниже будет перевод поста http://stackoverflow.com/a/21803286, благодаря которому у меня все получилось. По аналогии с этим, фактически, ставится любое расширение для штатного PHP в Mac OS X.

1. autoconf

Для начала понадобится autoconf, у меня он уже был после установки Oracle Client и php-oci8, поэтому прежде чем копипастить код, стоит проверить наличие его у вас.

$ mkdir -p ~/mcrypt/dependencies/autoconf
$ cd ~/mcrypt/dependencies/autoconf
$ curl -OL http://ftpmirror.gnu.org/autoconf/autoconf-latest.tar.gz
$ tar xzf autoconf-latest.tar.gz
$ cd autoconf-*/
$ ./configure --prefix=/usr/local
$ make
$ sudo make install

Проверяем результат

$ which autoconf

Должно вернуть /usr/local/bin/autoconf

2. libmcrypt

Как известно, php-mcrypt зависит от libmcrypt :) Поэтому качаем исходники с SourceForge, например по ссылке http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.bz2/download. Переходим по ссылке и доходим до скачивания, копируем прямую ссылку на файл и вставляем ee в код ниже:

$ mkdir -p ~/mcrypt/dependencies/libmcrypt
$ cd ~/mcrypt/dependencies/libmcrypt
$ curl -L -o libmcrypt.tar.bz2 '<SourceForge direct link URL>'
$ tar xjf libmcrypt.tar.bz2
$ cd libmcrypt-*/
$ ./configure
$ make
$ sudo make install

3. php-mcrypt

Теперь собираем раcширение mcrypt, для этого понадобятся исходники установленного PHP. Для начала узнаем версию нашего PHP:

$ php --version # в моем случае 5.5.14

Далее как в предыдущем пункте, идем по ссылке http://www.php.net/get/php-5.5.14.tar.bz2/from/a/mirror и получаем прямую ссылку на скачивание файла. Если ваш PHP сильно устарел, то придется поискать его исходники, начать можно отсюда https://secure.php.net/releases/.

$ mkdir -p ~/mcrypt/php
$ cd ~/mcrypt/php
$ curl -L -o php-5.5.14.tar.bz2 '<PHP direct link URL>'
$ tar xjf php-*.tar.bz2
$ cd php-*/ext/mcrypt
$ phpize
$ ./configure # вот тут все сломается, если libmcrypt из предыдущего шага не установлен
$ make
$ make test
$ sudo make install

Теперь у нас появилось само расширение mcrypt.so, для пущей уверенности можно проверить это при помощи команды

$ sudo find / -iname mcrypt.so

Это обыщет ВСЮ файловую систему на предмет файла mcrypt.so, не быстрая операция.

4. Включаем расширение mcrypt

Проверяем, что у нас есть работающий php.ini

$ ls /private/etc/php.ini

Если не выдает ничего, то у нас его нет, и его нужно создать, например вот так:

$ sudo cp /private/etc/php.ini.default /private/etc/php.ini

И теперь добавляем строку в php.ini, желательно рядом с тем местом, где описаны остальные расширения

extension=mcrypt.so

Убедится, что расширение включено можно с помощью команды:

$ php -m | grep mcrypt

Которая должна вывести "mcrypt" и больше ничего.

Ну и теперь перезапускам apache, чтоб php-mcrypt был доступен веб серверу

$ sudo apachectl restart

Все готово :)

Еще раз напомню, что аналогично устанавливается практически любое расширение, входящее в состав PHP.