Instalar ImageMagick e imagick con MAMP en OS X 10.6.4
Hola afición!
MAMP permite gestionar de forma muy cómoda Apache, MySQL y PHP. Necesitaba añadir la extensión imagick, librería de ImageMagick para PHP y después de mucho cruce de información y muchas pruebas lo he conseguido para este entorno de trabajo:
- MacOS X 10.6.4
- XCode 3.2.1 y 3.2.2
- Arquitectura Intel
- MAMP 1.9.4 (MAMP Pro) con PHP 5.3.2
MAMP 1.9.4 corre Apache 2, MySQL 5.1, PHP 5.2.13 o 5.3.2. Yo estoy corriendo la versión 5.3.2 de PHP para aprovecharme de sus nuevas librerías. El PHP de MAMP permite añadir librerías PECL para instalar casi cualquier extensión a PHP, como imagick para este caso particular.
Paso a paso para añadir la extensión PECL imagick a MAMP 1.9+
1. Instalar y actualizar las XCode de Apple, como mínimo la versión 3.2.1. Este procedimiento es útil para la 3.2.1 y la 3.2.2
2. Instalar MacPorts, desarrollo de una comunidad colaborativa de la red que hace más sencillo compilar, instalar y actualizar aplicaciones que a través de la línea de comandos, la aveces temida shell, pero que siempre es nuestra amiga.
3. Comprobar si la instalación de MacPorts no ha añadido al path del sistema las rutas a sus binarios (/opt/local/bin).
cat ~/.profile
Si devuelve algo como:
# MacPorts Installer addition on 2010-10-25_at_12:30:54: adding an appropriate PATH variable for use with MacPorts. export PATH=/opt/local/bin:/opt/local/sbin:$PATH # Finished adapting your PATH environment variable for use with MacPorts.
no es necesario añadir las rutas, y puedes pasar al punto 4.
Si no ves estas líneas, debes añadir al path del sistema las rutas a los binarios de MacPorts. Editar el fichero profile de tu usuario:
vi ~/.profile
añadir al final:
export PATH="/opt/local/bin:$PATH"
guardar y cerrar (:wq)
Cierra Terminal y vuelve a abrirlo para que tome los nuevos path de entorno de sistema.
4. Actualizar el repositorio local de paquetes de MacPorts, ejecutar en Terminal
sudo port -v selfupdate
5. Editar el fichero variants.conf que ha creado la instalación de MacPorts para que obligue la compilación de paquetes a hacerlos con distribuciones Universal para OS X. Editar:
vi /opt/local/etc/macports/variants.conf
al final del fichero, añadir:
+universal
guardar y salir
:wq
5. Instalar ImageMagick con MacPorts
sudo port install ImageMagick
Con esto, llega el momento de un descanso, porque tarda un buen rato en descargar, compilar e instalar si antes no tenías nada instalado.
Una vez instalado y que no haya dado errores, probar si ImageMagick está bien instalado, ejecutando:
convert -version
debería devolver la versión de ImageMagick instalada, si no, revisa que no te hayas saltado ningún paso.
6. Modificar el fichero envvars de MAMP
vi /Applications/MAMP/Library/bin/envvars
Comentar:
#DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH" #export DYLD_LIBRARY_PATH
Añadir:
export PATH="$PATH:/opt/local/bin"
7. Si es necesario, añadir permisos de ejecución a los comandos PHP de MAMP. Puede que necesitemos propagar permisos a los binarios PHP de MAMP, por seguridad vienen sin permisos de ejecución:
sudo chmod +x /Applications/MAMP/bin/php5.3/bin/*
8. Crear el directorio include en el php de MAMP
mkdir /Applications/MAMP/bin/php5.3/include
permisos:
sudo chmod -R 775 /Applications/MAMP/bin/php5.3/include/
9. Descargar el código fuente de la última versión estable de PHP 5 desde:
http://www.php.net/downloads.php
Descomprimir en:
/Applications/MAMP/bin/php5.3/include/
Renombrar el directorio a solo ‘php’, tiene que quedar:
/Applications/MAMP/bin/php5.3/include/php/
10. Hacer el configure de la distribución php descargada
cd /Applications/MAMP/bin/php5.3/include/php/ ./configure
11. Una vez hecho el configure, ir hasta el directorio de binarios de php5.3 de MAMP
cd /Applications/MAMP/bin/php5.3/bin/
12. Instalar la extensión PECL imagick. Este punto es común para cualquier otra extensión PECL que querramos añadir a nuestro OS X 10.6.4. Ejecuta:
sudo MACOSX_DEPLOYMENT_TARGET=10.6 CFLAGS='-O3 -fno-common -arch i386 -arch x86_64' LDFLAGS='-O3 -arch i386 -arch x86_64' CXXFLAGS='-O3 -fno-common -arch i386 -arch x86_64' /Applications/MAMP/bin/php5.3/bin/pecl install imagick
cuando te pida el directorio ImageMagick:
/opt/local
Como ves, compilamos la extensión para la arquitectura -i386 que es compatible con el conjunto sistema operativo y MAMP de 32bit y 64bit.
13. Copiar la extensión imagick.so en la carpeta de extensiones de MAMP
sudo cp /usr/lib/php/extensions/no-debug-non-zts-20090626/imagick.so /Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/
9. Editar el fichero php.ini de MAMP, desde el menú File -> Edit Templates -> PHP 5.3.2 php.ini. Añadimos en la carga de extensiones dinámicas, al final de esa lista, la de imagick:
extension=imagick.so
Guardamos cambios (Cmd-S) en MAMP.
10. Parar y arrancar MAMP para que refresque la configuración de php.ini
Y eso es todo, a disfrutar nuestro MAMP Pro 1.9.4 y las extensiones PECL.
Bibliografía para todo esta maraña de pruebas:
Installing Image Magick and Imagick for PHP for MAMP, by Adam Stacey
Install MacPorts
Getting MAMP 1.9 to work with Image Magick, imagick.so and other flora
How to enable PECL uploadprogress extention in MAMP
MAMP & Imagick on Snow Leopard
NOTA: Actualizado desde una instalación desde cero. Es un paso a paso, que si no te lo saltas funciona a la perfección.
SaludoX