Verifica l'installazione di ImageMagick


88

Il mio web hosting ha detto che ImageMagic è stato preinstallato sul server. Ho cercato velocemente "ImageMagick" nell'output di phpinfo () e non ho trovato nulla. Non riesco a eseguire SSH nel server, quindi c'è un modo in PHP per verificare l'installazione?

Risposte:


48

Prova questo:

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

23
questo verifica se l'applicazione ImageMagick è installata, non il modulo PHP
bcosca

Il codice di ritorno della versione è 0 * Versione: ImageMagick 6.3.7 08/09/09 Q16 imagemagick.org * Copyright: Copyright (C) 1999-2008 ImageMagick Studio LLC
Desmond Liang

questo è ciò che restituisce la pagina. sembra che abbia problemi a restituire la versione ma in qualche modo restituisce le informazioni sul copyright.
Desmond Liang

La risposta potrebbe funzionare, ma le due seguenti sono molto più semplici, facili e ovvie. Questa è una buona ragione per votare a favore di questo?
Sophivorus

2
È una soluzione che ha funzionato per la persona che pone la domanda. Il voto negativo non è per le risposte corrette. Se hai una domanda sull'etichetta dovresti farla su meta.stackoverflow.com
wajiw

149

Questo è il più breve e dolce possibile:

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

4
Allo stesso modo, dalla riga di comando:php -r 'echo "imagick is ".(extension_loaded("imagick")?"":"not ")."installed\n";'
Jon Gibbins

40

EDIT: le informazioni e lo script di seguito si applicano solo alla classe iMagick, che non viene aggiunta di default con ImageMagick !!!

Se voglio sapere se imagemagick è installato e funziona effettivamente come estensione php, incollo questo snippet in un file accessibile dal 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;
?>

Dovresti vedere una grafica Hello World:

inserisci qui la descrizione dell'immagine


22

In bash:

$ convert -version

o

$ /usr/local/bin/convert -version

Non è necessario scrivere alcun file PHP solo per controllare.


4
Solo per salvare chiunque altro debba cercarlo: converti è il comando della shell che imagick installa, quindi quanto sopra parla direttamente con esso per verificare che sia lì +1
Bananaapple

18

Puoi facilmente controllare la classe Imagick in PHP.

if( class_exists("Imagick") )
{
    //Imagick is installed
}

9
importante: a volte restituisce FALSE ma extension_loaded('imagick')restituisce TRUE!, quindi immagino che sia meglio:if( extension_loaded('imagick') || class_exists("Imagick") ){ /*do Imagick*/ }
jave.web

9

In Bash puoi verificare se Imagick è un modulo installato:

$ php -m | grep imagick

Se la risposta è vuota, non è installato.


7

Prova questa soluzione one-shot che dovrebbe capire dove si trova ImageMagick, se puoi accedervi ...

Questo ha trovato tutte le versioni sul mio hosting Godaddy.

Carica questo file sul tuo server e chiamalo ImageMagick.php o qualcosa del genere, quindi eseguilo. Riceverai tutte le informazioni di cui hai bisogno ... si spera ...

In bocca al lupo.

<?
/*
// 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";

?>

1
convertire un pdf: Many thx. bella sceneggiatura. ha funzionato bene sia su hostgator che su godaddy ... non bello come il cloud o AWS, ma nel budget dei miei clienti di piccole imprese.
zipzit

1
Dopo ore ... qui Google mangia questo: MediaWiki Errore durante la creazione della miniatura: sh: / usr / local / bin / convert: Nessun file o directory di questo tipo
Martin

La mia è un'applicazione basata su .NET e Sitecore. Come posso verificare se la mia applicazione utilizza ImageMagick o no?
Natasha Batra

1

Se il tuo ISP / servizio di hosting ha installato ImageMagick e ha inserito la sua posizione nella variabile d'ambiente PATH, puoi trovare quali versioni sono installate e dove si utilizza:

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

1

Per testare solo l'estensione IMagick PHP (non l'intera suite ImageMagick), salva quanto segue come file PHP (testImagick.php) e quindi eseguilo dalla 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";

credito: https://mlocati.github.io/articles/php-windows-imagick.html


0

Ricorda che dopo aver installato Imagick (o addirittura qualsiasi modulo PHP) devi riavviare il tuo server web e / o php-fpm se lo stai usando, affinché il modulo appaia in phpinfo ().

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.