» » Instalar imagick y xmp_toolkit en MAMP Pro 2.0.5 y OS X 10.6.8

Instalar imagick y xmp_toolkit en MAMP Pro 2.0.5 y OS X 10.6.8

Publicado en: Tecnología | 5

Instalación paso a paso, desde cero de MAMP con las extensiones PECL imagick y xmp_toolkit.

Con las versiones actualizadas de sistema operativo, MAMP, MacPorts e ImageMagick es posible correr Apache y PHP con los usuarios www y mysql desde MAMP sin el menor sobresalto. No como en versiones anteriores y todos los problemas ya conocidos y tratados en mi mensaje Instalar ImageMagick e imagick con MAMP en OS X 10.6.4.

Este tutorial está basado en estas versiones de software y sistema:

  • Mac OS X 10.6.8
  • XCode 3.2.6
  • Arquitectura Intel
  • MAMP Pro 2.0.5 con PHP 5.3.6 (Funciona igual en MAMP libre)

En resumen, debemos instalar MAMP Pro, MacPorts y actualizarlo, desde MacPorts instalar ImageMagick, las extensiones PECL imagick y, adicionalmente, xmp_toolkit y finalmente configurar los 2 php.ini de MAMP.

1. Instalar MAMP Pro y configurarlo para ejecutar PHP 5.3.6. Hacer correr los servicios con los usuarios ‘www’ para Apache 2, y ‘mysql’ para la base de datos MySQL 5.

Usuarios para correr Apache y MySQL en Mamp
Usuarios para correr Apache y MySQL en Mamp

2. Instalar las herramientas de desarrollo de Apple XCode.

3. Instalar MacPorts. Es necesario para compilar ImageMagick (con toda comodidad).

4. Actualizar MacPorts desde Terminal:

$ sudo /opt/local/bin/port -v selfupdate

5. Editar el fichero variants.conf de MacPorts:

$ sudo vi /opt/local/etc/macports/variants.conf

añadir al final:

+universal

6. Instalar ImageMagick con MacPorts:

$ sudo /opt/local/bin/port install ImageMagick

Cuando acaba, nos da un reporte de la versión instalada. En el momento de escribir este mensaje es:

Activating ImageMagick @6.7.3-1_0+q16+universal

7. Comprobar que ImageMagick esté bien instalado:

$ /opt/local/bin/convert -version
Version: ImageMagick 6.7.3-1 2011-11-02 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2011 ImageMagick Studio LLC
Features: OpenMP OpenCL

8. 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

y añadir al final:

export PATH="$PATH:/opt/local/bin"

9. Crear el directorio include en el php de MAMP

$ mkdir /Applications/MAMP/bin/php/php5.3.6/include

y ajustar permisos:

$ sudo chmod -R 775 /Applications/MAMP/bin/php/php5.3.6/include/

10. Descargar el código fuente de la última versión estable de PHP 5. En el momentos de escribir es la versión 5.2.8. Puedes descargarla desde el sitio web de php.net. Una vez descargado debemos descomprimirlo en el directorio include que hemos hecho en el paso 9. En Terminal ejecutamos:

$ cd /Applications/MAMP/bin/php/php5.3.6/include/
$ tar -xvf /ruta/php-distribucion.tar.gz

Renombrar el directorio a solo ‘php’, para que quede:

$ /Applications/MAMP/bin/php/php5.3.6/include/php/

11. Hacer el configure de la distribución php descargada

$ cd /Applications/MAMP/bin/php/php5.3.6/include/php/
$ ./configure

Llegados a este punto, debemos instalar la extensión PECL imagick, haciendo un export de la configuración de la plataforma Intel para el OS X 10.6.x pero obtendremos un fallo al ejecutar el paso 13, por lo que previamente, renombrados o borramos el fichero de configuración de pear que MAMP instala por defecto.

12. Error en fichero de configuración pear.conf de MAMP por defecto, borrar el fichero o renombrarlo:

$ mv /Applications/MAMP/bin/php/php5.3.6/conf/pear.conf /Applications/MAMP/bin/php/php5.3.6/conf/pear.conf.original

13. Instalar la extensión PECL imagick

$ cd /Applications/MAMP/bin/php/php5.3.6/bin/
$ 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 nos lo pida, le pasamos el directorio de ImageMagick:

/opt/local

Y el resultado de la instalación es:

Build process completed successfully
Installing '/Applications/MAMP/bin/php/php5.3.6/include/php/ext/imagick/php_imagick.h'
Installing '/Applications/MAMP/bin/php/php5.3.6/include/php/ext/imagick/php_imagick_defs.h'
Installing '/Applications/MAMP/bin/php/php5.3.6/include/php/ext/imagick/php_imagick_shared.h'
Installing '/Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/imagick.so'
install ok: channel://pecl.php.net/imagick-3.0.1
configuration option "php_ini" is not set to php.ini location
You should add "extension=imagick.so" to php.ini

14. Ajustar permisos de la extensión imagick.so a MAMP

$ cd /Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/

para el usuario y grupo:

$ sudo chown administrador:admin imagick.so

para la ejecución:

$ sudo chmod 775 imagick.so

Con este procedimiento podríamos instalar más extensiones PECL. Adicionalmente vamos a instalar la extensión XMP para poder leer los campos IPTC de ficheros. El proceso de instalación de la extensión XMP PHP Toolkit es el que sigue en el paso 15.

15. Descargar XMP PHP Toolkit del site del proyecto

16. Descomprimir el fichero y desde Terminal ir al directorio descomprimido

$ cd /path/xmp_toolkit

17. Ajustar permisos de ejecución a los ficheros:

$ sudo chmod -R +x ./

18. Compilar para OS X 10.6 32 y 64bit, ejecutar en Terminal:

$ MACOSX_DEPLOYMENT_TARGET=10.6 CFLAGS="-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch i386 -arch x86_64 -g -Os -pipe" LDFLAGS="-arch i386 -arch x86_64 -bind_at_load"
$ export CFLAGS CXXFLAGS LDFLAGS CCFLAGS MACOSX_DEPLOYMENT_TARGET
$ ./configure
$ make
$ sudo make install

y esto deja la extensión instalada en:

/usr/lib/php/extensions/no-debug-non-zts-20090626/

19. Copiar la extensión xmp_toolkit.so a MAMP

$ sudo cp /usr/lib/php/extensions/no-debug-non-zts-20090626/xmp_toolkit.so /Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/

Ajustamos los permisos:

$ cd /Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/
$ chown administrador:admin xmp_toolkit.so
$ chmod 775 xmp_toolkit.so

Y por último, podemos modificar los ficheros php.ini de MAMP y arrancarlo. Hay dos ficheros, uno para la interfaz de comandos (CLI) y otro para la interfaz web, dentro de la aplicación de MAMP Pro, en el menú File -> Edit Templates -> PHP 5.3.6 php.ini.

20. Editar los ficheros php.ini para incluir la extensión de imagick y xmp_toolkit.

Para la interfaz web:

$ sudo vi /Applications/MAMP/MAMP\ PRO.app/Contents/Resources/php5.3.6.ini

Buscamos las extensiones dinámicas, y al final de ellas, añadimos:

extension=imagick.so
extension=xmp_toolkit.so

Guardamos cambios del fichero y salimos del editor (:wq).

Para la interfaz de comandos CLI, editamos el fichero:

$ sudo vi /Applications/MAMP/bin/php/php5.3.6/conf/php.ini

y añadimos al final de las extensiones dinámicas las mismas líneas:

extension=imagick.so
extension=xmp_toolkit.so

Guardamos cambios del fichero y salimos del editor (:wq).

21. Arrancamos MAMP Pro y observamos como en el log no se producen avisos de error.

SaludoX

5 Comentarios

  1. Xurxo
    | Responder

    Hola, antes de nada agradecerte este excelente tutorial que me ha sido de gran ayuda, pero no consigo hacer funcionar esta librerías. Me da un error a a la hora de cargar la librería.
    El error es:

    [13-Dec-2011 17:41:23] PHP Warning: PHP Startup: Unable to load dynamic library ‘/Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/imagick.so’ – dlopen(/Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/imagick.so, 9): Library not loaded: /opt/local/lib/libfreetype.6.dylib
    Referenced from: /Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/imagick.so
    Reason: Incompatible library version: imagick.so requires version 15.0.0 or later, but libfreetype.6.dylib provides version 13.0.0 in Unknown on line 0

    Me puedes ayudar?

    Gracias de antemano

    Saludos,

    Xurxo

  2. nico
    | Responder

    Hola Xurxo, es un problema que surge con una librería JPEG de sistema, OS X, incompatible con ImageMagick, en mi caso, conseguí solucionarlo justo la semana pasada con una Mac OS X 10.7 y actualizando sistema operativo a la 10.6.8 con todos los parches de seguridad, incluidos los de impresión.

    Con esto el sistema actualiza la librería jpeg.

    No tengo ahora mis notas a mano, mañana en el trabajo las echaré un ojo, ahora escribo de memoria, pues haciendo una copia (sudo cp) de la librería de sistema sobre una carpeta de librerías del MAMP se puede corregir en parte (mañana lo escribiré con exactitud).

    Además, verifica el paso 8, el fichero envvars debe tener comentada las 2 líneas y añadida la de complementos del PATH, en una actualización de MacPorts puede modificarse este parámetro.

    Salud, y un placer que pueda serte útil.

  3. nico
    | Responder

    Xurxo, si con lo anterior no lo solucionas (actualizando sistema operativo) prueba a copiar la librería JPEG de MacPorts a MAMP:

    sudo cp /opt/local/lib/libfreetype.6.dylib /Applications/MAMP/Library/lib/

    Saludos

  4. Colorate
    | Responder

    hola …

    Una pregunta, tengo un usuario Admin en Mac donde tengo instalado MAMP PRO, pero quiero que un usuario invitado pueda utilizar PHP, MYSQL en su cuenta de usuario, pero no se como hacerlo.

    Alguna ayuda?.

  5. nico
    | Responder

    Hola Colorate. Según la web de MAMP Pro debe usarse en un entorno de desarrollo, no de producción, de hecho en producción da muy poco rendimiento. Suele ponerse en una máquina común para desarrollos entre varios, pero está orientado al algo personal, o de usuario único.

    Entiendo en tu pregunta que necesitas que otro usuario del Mac acceda al PHP, debes agregar el usuario al grupo de tu usuario admin, normalmente staff o wheel, depende de los permisos de tu raíz web.
    Y para MySQL lo que debes hacer es, si no quiere usar el mismo usuario root que tengas, añadir otro usuario a MySQL, y hacer un grant privileges a las bases que necesites, y entonces podrá usar el usuario invitado contra mysql.

    El usuario invitado del Mac lo mismo no te deja ejecutar ni hacer nada de nada, salvo los share folder para invitado. Crea un usuario standard local con una contraseña, nada de en blanco, para prevenir errores.

    ¿te funciona lo que te cuento?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.