Vérifier l'installation d'ImageMagick

87

Mon hébergement Web dit qu'ImageMagic a été préinstallé sur le serveur. J'ai fait une recherche rapide pour "ImageMagick" dans la sortie de phpinfo () et je n'ai rien trouvé. Je ne peux pas SSH sur le serveur, y a-t-il donc un moyen en PHP de vérifier l'installation?

Desmond Liang
la source

Réponses:

48

Essaye ça:

<?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
la source
22
cela teste si l'application ImageMagick est installée, pas le module PHP
bcosca
Le code de retour de la version est 0 * Version: ImageMagick 6.3.7 08/09/09 Q16 imagemagick.org * Copyright: Copyright (C) 1999-2008 ImageMagick Studio LLC
Desmond Liang
c'est ce que renvoie la page. semble avoir du mal à renvoyer la version mais renvoie en quelque sorte les informations de copyright.
Desmond Liang
La réponse peut fonctionner, mais les deux ci-dessous sont beaucoup plus simples, plus faciles et évidents. Est-ce une bonne raison de voter contre celui-ci?
Sophivorus
2
C'est une solution qui a fonctionné pour la personne qui pose la question. Le vote à la baisse n'est pas pour des réponses correctes. Si vous avez une question sur l'étiquette, vous devriez la poser sur meta.stackoverflow.com
wajiw
148

C'est aussi court et doux que possible:

if (!extension_loaded('imagick'))
    echo 'imagick not installed';
bcosca
la source
3
De même, depuis la ligne de commande:php -r 'echo "imagick is ".(extension_loaded("imagick")?"":"not ")."installed\n";'
Jon Gibbins
40

EDIT: Les informations et le script ci-dessous ne s'appliquent qu'à la classe iMagick - qui n'est pas ajoutée par défaut avec ImageMagick !!!

Si je veux savoir si imagemagick est installé et fonctionne réellement comme une extension php, je colle cet extrait dans un fichier accessible sur le 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;
?>

Vous devriez voir un graphique Hello World:

entrez la description de l'image ici

Nate Flink
la source
22

Dans bash:

$ convert -version

ou

$ /usr/local/bin/convert -version

Pas besoin d'écrire un fichier PHP juste pour vérifier.

Ashraf Slamang
la source
4
Juste pour éviter que quelqu'un d'autre n'ait à le rechercher - convert est la commande shell qu'imagick installe afin que le ci-dessus lui parle directement pour vérifier qu'il est là +1
Bananaapple
18

Vous pouvez facilement vérifier la classe Imagick en PHP.

if( class_exists("Imagick") )
{
    //Imagick is installed
}
Spencer Hakim
la source
9
important: Parfois, cela retourne FALSE mais extension_loaded('imagick')renvoie TRUE!, donc je suppose que mieux vaut:if( extension_loaded('imagick') || class_exists("Imagick") ){ /*do Imagick*/ }
jave.web
9

Dans Bash, vous pouvez vérifier si Imagick est un module installé:

$ php -m | grep imagick

Si la réponse est vide, elle n'est pas installée.

Monsieur jaune
la source
7

Essayez cette solution unique qui devrait déterminer où se trouve ImageMagick, si vous y avez accès ...

Cela a trouvé toutes les versions sur mon hébergement Godaddy.

Téléchargez ce fichier sur votre serveur et appelez-le ImageMagick.phpou quelque chose, puis exécutez-le. Vous obtiendrez toutes les informations dont vous avez besoin ... j'espère ...

Bonne chance.

<?
/*
// 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
la source
1
convertir un pdf: Beaucoup de thx. beau script. a bien fonctionné à la fois sur hostgator et godaddy ... pas aussi cool que le cloud ou AWS, mais dans le budget de mes petites entreprises clientes.
zipzit
1
Après les heures ... ici Google mange ceci: Erreur de MediaWiki lors de la création de la vignette: sh: / usr / local / bin / convert: Aucun fichier ou répertoire de ce type
Martin
La mienne est une application basée sur .NET et Sitecore. Comment puis-je vérifier si mon application utilise ImageMagick ou non?
Natasha Batra
1

Si votre FAI / service d'hébergement a installé ImageMagick et mis son emplacement dans la variable d'environnement PATH, vous pouvez trouver quelles versions sont installées et où en utilisant:

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

Pour tester uniquement l'extension PHP IMagick (pas la suite complète ImageMagick), enregistrez ce qui suit sous forme de fichier PHP (testImagick.php) puis exécutez-le depuis la console: 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édit: https://mlocati.github.io/articles/php-windows-imagick.html

atyachin
la source
0

N'oubliez pas qu'après l'installation d'Imagick (ou de tout module PHP), vous devez redémarrer votre serveur Web et / ou php-fpm si vous l'utilisez, pour que le module apparaisse dans phpinfo ().

Grindlay
la source