Soporte para ImageMagick en PHP con LAMPP

Hace algunos días estaba intentando averiguar cómo habilitar el soporte para [Image Magick->@wiki] en PHP al utilizar LAMPP (o más exactamente XAMPP for Linux), pero en ninguna parte encontré información específica… así que aquí va una pequeña receta para hacerlo bajo Ubuntu, junto a algunas notas pertinentes. El proceso debería ser bastante similar en otros sistemas y en caso de querer agregar soporte para otras extensiones.

Image Magick es conjunto de programas para trabajar con imágenes que soporta una gran cantidad de formatos. En ocasiones, logra mejores resultados que [GD->GD Graphics Libray@wiki], la librería que suele acompañar a PHP para la manipulación de imágenes — por ejemplo, al generar imágenes a partir de texto, Image Magick logra una mejor medición de cada uno de los caracteres, creando un texto más armónico que GD. A menos que estés creando un script donde hay mucho trabajo con gráficos probablemente no notes la diferencia, pero si sientes que GD queda algo corto en algún caso bien podrías darle una oportunidad a Image Magick.

En PHP, es posibile habilitar el soporte para ImageMagick a través de PECL (un sistema para agregar extensiones similar a CPAN en el caso de Perl o [Gem->RubyGems] en el caso de Ruby), pero para ello debemos realizar algunos pasos previos.

A los que nos interesa:

  1. Instalar LAMPP (paquete normal): se puede bajar desde el sitio de XAMPP for Linux; donde también se detallan las instrucciones de instalación.
  2. Instalar paquete de desarrollo LAMPP, que también se descarga desde el sitio de XAMPP for Linux. Este paquete es necesario para compilar las extensiones que deseemos agregar a la instalación base de XAMPP.
  3. Instalar autoconf vía Synaptic, o bien por línea de comandos con sudo aptitude install autoconf. Este paquete permite generar los scripts automáticos de configuración para las extensiones que posteriormente vamos a bajar y compilar.
  4. Instalar libmagickwand vía Synaptic, o con sudo aptitude install libmagickwand2 libmagickwand-dev, para incluir las cabeceras de desarrollo que son necesarias para compilar la extensión para PHP. Esta librería sirve de interfaz para ImageMagick. Quizás aquí alguien se preguntará ¿pero cómo sé que tengo que bajar libmagickwand?. La respuesta es simple: porque al intentar instalar la extensión por primera vez, el compilador se detuvo justamente por la falta de este paquete.
  5. Instalar soporte para Imagemagick con PECL: llegamos a lo que nos interesa. Desde la terminal: sudo /opt/lampp/bin/pecl install imagick. Aquí hay que estar atento a los requerimientos para compilar e instalar la extensión. En caso que la instalación falle, habrá que revisar qué paquete esté faltando, instalarlo y luego ejecutar nuevamente la instalación
  6. Agregar módulo a php.ini: finalmente, debes editar el archivo /opt/lampp/etc/php.ini, y agregar en la sección de Dynamic Extensions: extension="imagick.so" de modo de cargar la extensión al reiniciar el servidor.
  7. Reiniciar XAMPP con sudo /opt/lampp/lampp restart para recargar la configuración de PHP
  8. Si todo salió bien, al visualizar un archivo con phpinfo(); debería aparecer el módulo imagick cargado.