Установка PHP 5.3 на Snow Leopard

В очередной раз обновил свой MacBook Pro 15”, и как обычно понадобилось установить PHP не стандартной конфигурации. Обычно я использовал MacPorts для установки необходимых мне пакетов, но он ужасен.

Минуточку. А вообще зачем мне все это? Ведь, скажите вы, в Snow Leopard уже есть установленный и готовый к работе PHP 5.3. Поэтому привожу примерный список почему я собираю PHP ручками:

  1. чтобы был mysql 5.5 через mysqlnd
  2. чтобы работало intl расширение (на Mac OS X до этого мне ни разу не удалось его поставить)
  3. чтобы не было проблем с iconv
  4. чтобы был 64 битный
  5. чтобы была последняя версия

На этот раз я решил использовать Homebrew для установки необходимых пакетов. Автор этой утилиты гордо называет свой проект: “The missing package manager for OS X” и я в чем-то согласен. Главный принцип состоит в том чтобы не делать лишнего. Если какие-то пакеты, библиотеки уже находятся в системе, он будет использовать их.

Установка Homebrew это очень простое занятие, достаточно запустить в консоли

ruby -e "$(curl -fsSLk https://gist.github.com/raw/323731/install_homebrew.rb)"

и после этого назначить права доступа

sudo chown -R $USER:staff /usr/local

Для того чтобы обновлять пакеты нужно поставить git

brew install git

После этого все обновления происходят через команду

brew update

Теперь приступим к установки необходимых пакетов для нашего PHP, разумеется начнем с MySQL 5.5

brew install mysql

после установки MySQL нужно будет выполнить инструкции которые подскажет Homebrew, затем ставим оставшиеся пакеты

brew install libjpeg
brew install gmp
brew install mcrypt
brew install gettext
brew install icu4c
brew install libxml2

Остается дело за конфигурацией и установкой PHP, берем последнюю версию с сайта, на момент написания статьи была версия 5.3.6, распаковываем и начинаем конфигурацию

env EXTRA_LIBS="-lstdc++" ./configure --prefix=/usr/local/php
 --with-apxs2=/usr/sbin/apxs
 --with-layout=GNU
 --enable-calendar
 --enable-ftp
 --enable-bcmath
 --enable-mbstring
 --enable-mbregex
 --with-icu-dir=/usr/local/Cellar/icu4c/4.4.1
 --enable-intl
 --enable-cli
 --enable-sockets
 --enable-soap
 --with-gettext=/usr/local/Cellar/gettext/0.18.1.1
 --with-bz2
 --with-zlib
 --enable-zip
 --with-gd
 --with-jpeg-dir
 --with-png-dir=/usr/X11
 --with-xpm-dir
 --with-freetype-dir=/usr/X11
 --enable-exif
 --with-gmp
 --with-mcrypt
 --with-mysql=mysqlnd
 --with-pdo-mysql=mysqlnd
 --with-mysql-sock=/tmp/mysql.sock
 --with-curl
 --with-openssl
 --with-libxml-dir=/usr/local/Cellar/libxml2/2.7.7
 --with-xsl=/usr
 --with-xmlrpc
 --enable-sqlite-utf8
 --enable-shmop
 --enable-pcntl
 --enable-sysvmsg
 --enable-sysvsem
 --enable-sysvshm

ну а далее как обычно

make
sudo make install

На этом установка заканчивается.

В конце хочу показать ошибки, с которыми я сталкивался при компиляции PHP, возможно это поможет тем кто ищет работающий вариант установки.

Проблема с конфликтом intl и libxml2, была решена с помощью установки последней версии libxml2, ошибка выглядела так:

In file included from /opt/local/include/unicode/utypes.h:36,
 from /usr/local/src/php-5.3.6/ext/intl/grapheme/grapheme.h:21,
 from /usr/local/src/php-5.3.6/ext/intl/php_intl.h:26,
 from main/internal_functions.c:47:
/opt/local/include/unicode/umachine.h:308: error: redefinition of typedef ‘UChar’
/usr/include/libxml2/libxml/encoding.h:41: error: previous declaration of ‘UChar’ was here
make: *** [main/internal_functions.lo] Error 1

Проблема с установкой intl в 64 битном режиме, была решена с помощью “env EXTRA_LIBS=”-lstdc++”“, ошибка выглядела так:

Undefined symbols for architecture x86_64:
 "___gxx_personality_v0", referenced from:
 Dwarf Exception Unwind Info (__eh_frame) in msgformat_helpers.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make: *** [libs/libphp5.bundle] Error 1

Были еще какие-то ошибки, но их я уже не записал.

Надеюсь будет полезно, по-крайней мере я точно посмотрю в эту статью еще не раз ;)

← JavaScript GardenСтандарты для front-end разработчик →