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 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:
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):
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):
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
):
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:
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:
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.
Muy buen artículo, a pesar del tiempo que ha pasado, sigue muy válido.