Verificar la instalación de ImageMagick

87

Mi alojamiento web decía que ImageMagic estaba preinstalado en el servidor. Hice una búsqueda rápida de "ImageMagick" en la salida de phpinfo () y no encontré nada. No puedo SSH en el servidor, ¿hay alguna forma en PHP de que pueda verificar la instalación?

Desmond Liang
fuente

Respuestas:

48

Prueba esto:

<?php
//This function prints a text array as an html list.
function alist ($array) {  
  $alist = "<ul>";
  for ($i = 0; $i < sizeof($array); $i++) {
    $alist .= "<li>$array[$i]";
  }
  $alist .= "</ul>";
  return $alist;
}
//Try to get ImageMagick "convert" program version number.
exec("convert -version", $out, $rcode);
//Print the return code: 0 if OK, nonzero if error. 
echo "Version return code is $rcode <br>"; 
//Print the output of "convert -version"    
echo alist($out); 
?>
wajiw
fuente
22
esto prueba si la aplicación ImageMagick está instalada, no el módulo PHP
bcosca
El código de retorno de la versión es 0 * Versión: ImageMagick 6.3.7 08/09/09 Q16 imagemagick.org * Copyright: Copyright (C) 1999-2008 ImageMagick Studio LLC
Desmond Liang
esto es lo que devuelve la página. parece que tiene problemas para devolver la versión, pero de alguna manera devuelve la información de derechos de autor.
Desmond Liang
La respuesta puede funcionar, pero los dos siguientes son mucho más simples, fáciles y obvios. ¿Es esta una buena razón para rechazar este?
Sophivorus
2
Es una solución que funcionó para la persona que hizo la pregunta. Votar en contra no es para respuestas correctas. Si tiene una pregunta sobre etiqueta, debe hacerla en meta.stackoverflow.com
wajiw
149

Esto es lo más breve y dulce posible:

if (!extension_loaded('imagick'))
    echo 'imagick not installed';
bcosca
fuente
3
Del mismo modo, desde la línea de comando:php -r 'echo "imagick is ".(extension_loaded("imagick")?"":"not ")."installed\n";'
Jon Gibbins
40

EDITAR: ¡La información y el script a continuación solo se aplican a la clase iMagick, que no se agrega de forma predeterminada con ImageMagick!

Si quiero saber si imagemagick está instalado y realmente funciona como una extensión php, pego este fragmento en un archivo accesible desde la web

<?php

error_reporting(E_ALL); 
ini_set( 'display_errors','1');

/* Create a new imagick object */
$im = new Imagick();

/* Create new image. This will be used as fill pattern */
$im->newPseudoImage(50, 50, "gradient:red-black");

/* Create imagickdraw object */
$draw = new ImagickDraw();

/* Start a new pattern called "gradient" */
$draw->pushPattern('gradient', 0, 0, 50, 50);

/* Composite the gradient on the pattern */
$draw->composite(Imagick::COMPOSITE_OVER, 0, 0, 50, 50, $im);

/* Close the pattern */
$draw->popPattern();

/* Use the pattern called "gradient" as the fill */
$draw->setFillPatternURL('#gradient');

/* Set font size to 52 */
$draw->setFontSize(52);

/* Annotate some text */
$draw->annotation(20, 50, "Hello World!");

/* Create a new canvas object and a white image */
$canvas = new Imagick();
$canvas->newImage(350, 70, "white");

/* Draw the ImagickDraw on to the canvas */
$canvas->drawImage($draw);

/* 1px black border around the image */
$canvas->borderImage('black', 1, 1);

/* Set the format to PNG */
$canvas->setImageFormat('png');

/* Output the image */
header("Content-Type: image/png");
echo $canvas;
?>

Debería ver un gráfico de hola mundo:

ingrese la descripción de la imagen aquí

Nate Flink
fuente
22

En bash:

$ convert -version

o

$ /usr/local/bin/convert -version

No es necesario escribir ningún archivo PHP solo para verificar.

Ashraf Slamang
fuente
4
Solo para evitar que alguien más tenga que buscarlo, convertir es el comando de shell que imagick instala, por lo que lo anterior se comunica directamente con él para verificar que esté allí +1
Bananaapple
18

Puede comprobar fácilmente la clase Imagick en PHP.

if( class_exists("Imagick") )
{
    //Imagick is installed
}
Spencer Hakim
fuente
9
importante: a veces esto devuelve FALSO pero extension_loaded('imagick')devuelve VERDADERO, así que supongo que mejor es:if( extension_loaded('imagick') || class_exists("Imagick") ){ /*do Imagick*/ }
jave.web
9

En Bash puedes comprobar si Imagick es un módulo instalado:

$ php -m | grep imagick

Si la respuesta está en blanco, no está instalado.

Señor amarillo
fuente
7

Pruebe esta solución única que debería averiguar dónde está ImageMagick, si tiene acceso a ella ...

Esto encontró todas las versiones en mi alojamiento Godaddy.

Sube este archivo a tu servidor y llámalo ImageMagick.phpo algo y luego ejecútalo. Obtendrá toda la información que necesita ... con suerte ...

Buena suerte.

<?
/*
// This file will run a test on your server to determine the location and versions of ImageMagick. 
//It will look in the most commonly found locations. The last two are where most popular hosts (including "Godaddy") install ImageMagick.
//
// Upload this script to your server and run it for a breakdown of where ImageMagick is.
//
*/
echo '<h2>Test for versions and locations of ImageMagick</h2>';
echo '<b>Path: </b> convert<br>';

function alist ($array) {  //This function prints a text array as an html list.
    $alist = "<ul>";
    for ($i = 0; $i < sizeof($array); $i++) {
        $alist .= "<li>$array[$i]";
    }
    $alist .= "</ul>";
    return $alist;
}

exec("convert -version", $out, $rcode); //Try to get ImageMagick "convert" program version number.
echo "Version return code is $rcode <br>"; //Print the return code: 0 if OK, nonzero if error.
echo alist($out); //Print the output of "convert -version"
echo '<br>';
echo '<b>This should test for ImageMagick version 5.x</b><br>';
echo '<b>Path: </b> /usr/bin/convert<br>';

exec("/usr/bin/convert -version", $out, $rcode); //Try to get ImageMagick "convert" program version number.
echo "Version return code is $rcode <br>"; //Print the return code: 0 if OK, nonzero if error.
echo alist($out); //Print the output of "convert -version"

echo '<br>';
echo '<b>This should test for ImageMagick version 6.x</b><br>';
echo '<b>Path: </b> /usr/local/bin/convert<br>';

exec("/usr/local/bin/convert -version", $out, $rcode); //Try to get ImageMagick "convert" program version number.
echo "Version return code is $rcode <br>"; //Print the return code: 0 if OK, nonzero if error.
echo alist($out); //Print the output of "convert -version";

?>
convertir un pdf
fuente
1
convertir un pdf: Muchas gracias. buen guion. funcionó bien tanto en hostgator como en godaddy ... no tan genial como la nube o AWS, pero dentro del presupuesto de mis clientes de pequeñas empresas.
zipzit
1
Después de horas ... aquí Google come esto: Error de MediaWiki al crear la miniatura: sh: / usr / local / bin / convert: No existe tal archivo o directorio
Martin
La mía es una aplicación basada en .NET y Sitecore. ¿Cómo verifico mi aplicación si usa ImageMagick o no?
Natasha Batra
1

Si su ISP / servicio de alojamiento ha instalado ImageMagick y ha puesto su ubicación en la variable de entorno PATH, puede encontrar qué versiones están instaladas y dónde usar:

<?php
echo "<pre>";
system("type -a convert");  
echo "</pre>";
?> 
fmw42
fuente
1

Para probar solo la extensión PHP de IMagick (no la suite ImageMagick completa), guarde lo siguiente como un archivo PHP (testImagick.php) y luego ejecútelo desde la consola: php testImagick.php

<?php
$image = new Imagick();
$image->newImage(1, 1, new ImagickPixel('#ffffff'));
$image->setImageFormat('png');
$pngData = $image->getImagesBlob();
echo strpos($pngData, "\x89PNG\r\n\x1a\n") === 0 ? 'Ok' : 'Failed';
echo "\n";

crédito: https://mlocati.github.io/articles/php-windows-imagick.html

atyachin
fuente
0

Recuerde que después de instalar Imagick (o de hecho cualquier módulo PHP) necesita reiniciar su servidor web y / o php-fpm si lo está usando, para que el módulo aparezca en phpinfo ().

Grindlay
fuente