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.
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
Xurxo
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
nico
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.
nico
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
Colorate
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?.
nico
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?