Как известно, в Mac OS X уже есть и apache и PHP, но что делать если требуется добавить какое-либо расширение в PHP? Можно, конечно, воспользоваться brew и получить еще одну параллельную версию PHP, а потом мучиться с ее настройкой, ради одного расширения. Я же опишу более правильный путь - собрать расширение для уже имеющегося в системе PHP.
Описание на примере mcrypt, который мне понадобился при установке laravel. Фактически ниже будет перевод поста http://stackoverflow.com/a/21803286, благодаря которому у меня все получилось. По аналогии с этим, фактически, ставится любое расширение для штатного PHP в Mac OS X.
Для начала понадобится 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
Как известно, 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
Теперь собираем ра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, не быстрая операция.
Проверяем, что у нас есть работающий 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.