OS X Yosemite

Este post no pretende ser un tutorial paso a paso ni mucho menos, son sólo algunas notas rápidas sobre el tema que pueden ser de ayuda a los «early adopters» del Yosemite o nerds en general. Recomiendo leerlo completo antes de hacer nada.

Antes que nada hay que instalar las Command Line Tools (requiere de un Apple Id).

Dependiendo de los módulos que queramos con esto puede ser suficiente para instalarlos via pecl, pero si queremos instalar un módulo que viene con php pero que Apple decidió no compilarlo, debemos descargar el código fuente de la versión de PHP que viene ya incluída en Yosemite, es el 5.5.14.

Descomprimirlo y configurarlo con la siguiente línea (que es como viene configurado ya en OS X, comprobarlo con phpinfo() por las dudas):

./configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info \
--disable-dependency-tracking --sysconfdir=/private/etc --with-apxs2=/usr/sbin/apxs \
--enable-cli --with-config-file-path=/etc --with-config-file-scan-dir=/Library/Server/Web/Config/php \
--with-libxml-dir=/usr --with-openssl=/usr --with-kerberos=/usr --with-zlib=/usr --enable-bcmath \
--with-bz2=/usr --enable-calendar --disable-cgi --with-curl=/usr --enable-dba --with-ndbm=/usr \
--enable-exif --enable-fpm --enable-ftp --with-png-dir=no --with-gd \
--with-jpeg-dir=/BinaryCache/apache_mod_php/apache_mod_php-93~55/Root/usr/local \
--enable-gd-native-ttf --with-icu-dir=/usr --with-ldap=/usr --with-ldap-sasl=/usr \
--with-libedit=/usr --enable-mbstring --enable-mbregex --with-mysql=mysqlnd --with-mysqli=mysqlnd \
--without-pear --with-pear=no --with-pdo-mysql=mysqlnd --with-mysql-sock=/var/mysql/mysql.sock \
--with-readline=/usr --enable-shmop --with-snmp=/usr --enable-soap --enable-sockets \
--enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-tidy --enable-wddx --with-xmlrpc \
--with-iconv-dir=/usr --with-xsl=/usr --enable-zend-multibyte --enable-zip --with-pcre-regex=/usr

Si todo sale bien aquí podríamos hacer make, make install y listo, o si no podemos copiar los headers requeridos en /usr/include/php, etc. y luego compilar los módulos que nos interesen, por ejemplo mcrypt:

cd ext/mcrypt/
phpize
./configure
make
make install

En cambio si queremos soporte png para el módulo gd, no nos queda otra opción que compilar php nuevamente con el mismo «configure» anterior pero simplemente quitando este switch «–with-png-dir=no».

Ya que estamos podemos agregar este también «–enable-opcache».

Con APC me di por vencido, y aparte no anda bien junto con el nuevo opcache, pero igual lo necesitaba, así que instalé APCu y por ahora va bien.

Todo lo demás que falte a nivel librerías, lo instalamos con Brew.

Si vamos a compilar php completo, no sólo algunos módulos, ya no hace falta que sea el 5.5.14, podemos instalar uno más nuevo pero, para evitar problemas, yo instalé la misma, que se supone que es la que ellos probaron y debería compilar sin sobresaltos.

Y de hecho lo hizo.

 

UPDATE: Si por ningún motivo aparente aparece un error como este:

PHP Warning:  preg_match(): Compilation failed: unknown option bit(s) set at offset 0 in...

recomiendo compilar php sin esta opción:

--with-pcre-regex=/usr

Esto hace que php use la versión de PCRE que trae incluída en lugar de la desactualizada de OS X. Mágicamente el error desaparece y ciertas expresiones regulares vuelven a funcionar.