web-dev-qa-db-fra.com

Vérifier l'installation d'ImageMagick

Mon hébergement Web dit 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 utiliser SSH sur le serveur. Y a-t-il un moyen dans PHP Je peux vérifier l'installation?

75
Desmond Liang

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); 
?>
47
wajiw

C'est aussi court et doux que possible:

if (!extension_loaded('imagick'))
    echo 'imagick not installed';
127
bcosca

EDIT: Les informations et le script ci-dessous s'appliquent uniquement à 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 par 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:

enter image description here

32
Nate Flink

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

if( class_exists("Imagick") )
{
    //Imagick is installed
}
16
Spencer Hakim

En bash:

$ convert -version

ou

$ /usr/local/bin/convert -version

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

13
Ashraf Slamang

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

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

Téléchargez ce fichier sur votre serveur et appelez-le ImageMagick.php ou quelque chose puis lancez-le. Vous obtiendrez toutes les informations dont vous avez besoin ... espérons-le ...

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";

?>
8
convert a pdf

Si votre fournisseur d'accès à Internet/service d'hébergement a installé ImageMagick et a placé son emplacement dans la variable d'environnement PATH, vous pouvez rechercher les versions installées et les emplacements où:

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

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

$ php -m | grep imagick

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

1
Mr.Yellow

Pour tester uniquement l’IMagick PHP (et non la suite complète ImageMagick)], enregistrez le fichier suivant sous le nom PHP (testImagick.php), puis exécutez-le à partir de 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

0
atyachin