Cómo instalar y habilitar la extensión Imagick en XAMPP para Windows

Imagick en XAMPP para Windows

Imagick es una expansión nativa de PHP para generar y editar imágenes utilizando la API ImageMagick. El nombre causa cierta confusión debido a que la población sospecha que ImageMagick e Imagick son lo mismo, sin embargo no lo son. Puedes utilizar ImageMagick sin Imagick, aún asínecesitas tanto Imagick como ImageMagick instalados para ejecutarlo en tu código PHP.

Puedes comprobar con el código PHP si la expansión Imagick está instalada o no:

<?php 

if (!extension_loaded('imagick')){
    echo 'imagick not installed';
}

O simplemente los errores en el código que implementa Imagick te dirán:

Se intentó cargar la clase "Imagick" desde el espacio de nombres global. ¿Olvidó una declaración de "uso"?

No se encontró la clase "Imagick"

En XAMPP para Windows, Imagick no está incluido por defecto, por lo cual su instalación e utilización es dependiente de ti.

Si has buscado antes cómo instalar Imagick en XAMPP para que funcione, y no puedes realizarlo, posiblemente estés fuera de los parámetros y bastante frustrado.

Afortunadamente, en este artículo encontrarás la solución a tus inconvenientes y verás como puedes hacer la instalación final de Imagick para XAMPP en Windows sin ningún tipo de problema, a priori.

Notas previas a la instalación

Tenemos que mencionar que la instalación de Imagick no es fácil (puede resultar un poco confuso) y es posible que obtengas errores durante la instalación si no sigues cada paso con cuidado. Además, necesitas conocer la siguiente información sobre tu versión de PHP:

Nota: Según la versión de XAMPP que estés utilizando, estos valores pueden variar.

Nombre propio Valor por defecto
Arquitectura x86 (XAMPP predeterminado)
Seguridad del alambre Calificado

TS: son las siglas de Thread Safety Enabled

NTS: son las siglas de Thread Safety Disabled

Compilador MSVC11 (Visual C ++ 2012)

Algunas versiones de Imagick están compiladas con diferentes versiones, por ejemplo, VC9, VC11 (en este caso), VC14

Puedes obtener estos valores con la función phpinfo()  de PHP que puedes realizar dentro de un script vacío:

<?php

phpinfo();

Una vez que conozcas los valores, estos te indicarán qué arquitectura necesitas descargar de todos los pasos a continuación.

Nota: tampoco olvides realizar ninguna configuración con derechos de administrador.

1. Descarga e instala ImageMagick para Windows

Podrás descargar ImageMagick desde el área de descargas del sitio web oficial y desplázate hasta la zona de Windows.

ImageMagick funciona en casi todas las versiones para Windows (desde Windows Server 2009, XP a Windows 10), es importante descargar la última versión disponible con la arquitectura X86 y versión DLL porque esta es la arquitectura utilizada por XAMPP.

Descarga Imagick Setup Windows

Descarga el ejecutable y espera. Hasta ahora no es necesario configurar nada para PHP, simplemente procede con la instalación de Imagick para Windows y no olvides marcar la opción para agregar Imagick a la RUTA:

Agregar Imagick a PATH en Windows

Una vez completada la instalación, puedes probar Imagick con un simple comando desde la consola (que debería imprimir la versión en la consola):

magick -version

2. Descarga Imagick para PHP

Ahora vete al paquete Imagick en el sitio web de PECL aquí y selecciona la versión DLL de la última versión disponible (en caso de que hayas descargado una versión anterior de ImageMagick, descarga una versión que acepte tu versión):

Configuración del paquete Imagick PECL

Luego se cargará una nueva ventana, en esta página desplázate hacia abajo hasta la lista de DLL y haz clic en la versión correcta para tu versión de PHP con la arquitectura correcta (de XAMPP no de tu sistema operativo) y Thread Safe en caso de que esté habilitado en tu distribución (consulta el phpinfo para saber si tu distribución php usa Thread Safe o no):

Versión de PHP Imagick DLL

Esto comenzará a descargar un archivo zip «php_imagick-<version>-<thread-safe-or-not>-<php-compiled-version>-<architecture>.zip«. De esto .zip necesitarás extraer solo el archivo php_imagick.dll. Copiar php_imagick.dll archivar y pegar en la carpetaphp/ext dentro de la ruta de instalación de xampp (normalmente C:/xampp/php/ext):

Copiar dll al directorio php ext

Luego, procede a habilitar la extensión en tu archivo php.ini agregando la siguiente línea:

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
; Add the following line where the other extensions are loaded
extension=php_imagick.dll

Ahora la extensión está cargada, pero Imagick aún no funciona, ya que ni siquiera se reconocerá como una extensión si verificas el archivo en phpinfo porque necesitamos cargar todos los métodos y binarios que puedes recuperar en el siguiente paso.

3. Descarga los archivos binarios de Imagick necesarios

En este punto te estás preguntando, ¿de verdad ? ¿3 descargas diferentes? El problema con Imagick es que hay muchas compilaciones de diferentes fuentes y si no se descarga e instala las correctas, no funcionará o se cargará, pero si verificas la extensión Imagick (más tarde, todavía no) en phpinfo verás:

Número de formatos compatibles con ImageMagick: 0

Es por eso que debes seguir los pasos mencionados, de lo contrario, no harás que Imagick funcione. En este caso, para evitar errores de implementación, los archivos binarios deben provenir de la misma fuente windows.php.net. Para descargar los binarios requeridos, vete a PECL Deps aquí y busca Imagick en la lista:

Binarios de ImageMagick Windows XAMPP

Descarga la versión que coincida con la arquitectura xampp y verifica la versión del compilador. En este caso, descargamos la tercera opción con un tamaño de archivo de aproximadamente 30 MB (ImageMagick-6.9.3-7-vc11-x86.zip).

Ahora extrae todos los archivos de este zip a una carpeta donde quieras, en este caso vamos a extraer el contenido del zip a una carpeta del escritorio.

Una vez que se haya extraído el contenido del archivo, abre la carpetabin y copia todos los archivos .dll (excepto ImageMagickObject.dll) que serían unos 146 archivos (con prefijos CORE_* es IM_MOD_*) y luego pega los archivos copiados en el la carpeta apache/bin de xampp (normalmente en C:/xampp/apache/bin).

Ahora inicia el servicio Apache (o reinícialo si ya se está ejecutando) y vete otra vez a phpinfo. Ahora deberías de ver por fin imagick cargado como una extensión:

Extensión PHPINFO Imagick cargada correctamente

Y finalmente, después de horas de sufrimiento, puedes usar Imagick con PHP para XAMPP en Windows.

En caso de error de la consola

Si después de la implementación aún recibes el siguiente mensaje de error cada vez que usas PHP (al menos en la consola):

Advertencia de PHP: Inicio de PHP: Error al cargar la biblioteca dinámica "C: xampp php ext php_imagick.dll" - No se pudo encontrar el módulo especificado.

Deberás agregar el directoriobin de Apache (C:/xampp/apache/bin) a la variable PATH de entorno de Windows y el problema se resolverá.

Aún así no te deprimas si ves que a la primera no funciona. Intenta seguir los pasos anteriores al pie de la letra y cualquier duda que tengas remítenosla en los comentarios de aquí abajo. Te responderemos lo antes posible.