Überprüfen Sie die ImageMagick-Installation

85

Mein Webhosting sagte, ImageMagic sei auf dem Server vorinstalliert. Ich habe in der Ausgabe von phpinfo () schnell nach "ImageMagick" gesucht und nichts gefunden. Ich kann kein SSH auf dem Server ausführen. Gibt es in PHP eine Möglichkeit, die Installation zu überprüfen?

Desmond Liang
quelle

Antworten:

46

Versuche dies:

<?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
quelle
22
Dies testet, ob die ImageMagick-Anwendung installiert ist, nicht das PHP-Modul
bcosca
Versionsrückgabecode ist 0 * Version: ImageMagick 6.3.7 08/09/09 Q16 imagemagick.org * Copyright: Copyright (C) 1999-2008 ImageMagick Studio LLC
Desmond Liang
Dies ist, was die Seite zurückgibt. Anscheinend hat es Probleme, die Version zurückzugeben, aber irgendwie werden die Copyright-Informationen zurückgegeben.
Desmond Liang
Die Antwort mag funktionieren, aber die beiden folgenden sind viel einfacher, einfacher und offensichtlicher. Ist dies ein guter Grund, diesen abzustimmen?
Sophivorus
2
Es ist eine Lösung, die für die Person funktioniert hat, die die Frage stellt. Down-Voting ist nicht für richtige Antworten. Wenn Sie eine Frage zur Etikette haben, sollten Sie diese in meta.stackoverflow.com
wajiw
148

Das ist so kurz und süß wie es nur geht:

if (!extension_loaded('imagick'))
    echo 'imagick not installed';
bcosca
quelle
2
Ebenso von der Kommandozeile:php -r 'echo "imagick is ".(extension_loaded("imagick")?"":"not ")."installed\n";'
Jon Gibbins
40

BEARBEITEN: Die folgenden Informationen und Skripte gelten nur für die iMagick-Klasse - die mit ImageMagick nicht standardmäßig hinzugefügt wird !!!

Wenn ich wissen möchte, ob imagemagick installiert ist und tatsächlich als PHP-Erweiterung funktioniert, füge ich dieses Snippet in eine über das Internet zugängliche Datei ein

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

Sie sollten eine Hallo-Welt-Grafik sehen:

Geben Sie hier die Bildbeschreibung ein

Nate Flink
quelle
21

In Bash:

$ convert -version

oder

$ /usr/local/bin/convert -version

Sie müssen keine PHP-Datei schreiben, nur um dies zu überprüfen.

Ashraf Slamang
quelle
4
Nur um zu verhindern, dass andere nachschlagen müssen - konvertieren ist der Shell-Befehl, den imagick installiert, sodass die oben genannten direkt mit ihm
sprechen
18

Sie können in PHP leicht nach der Imagick-Klasse suchen.

if( class_exists("Imagick") )
{
    //Imagick is installed
}
Spencer Hakim
quelle
9
wichtig: Manchmal gibt dies FALSE zurück, aber extension_loaded('imagick')TRUE!, also denke ich besser ist:if( extension_loaded('imagick') || class_exists("Imagick") ){ /*do Imagick*/ }
jave.web
7

Probieren Sie diese einmalige Lösung aus, die herausfinden sollte, wo sich ImageMagick befindet, wenn Sie Zugriff darauf haben ...

Dies fand alle Versionen auf meinem Godaddy-Hosting.

Laden Sie diese Datei auf Ihren Server hoch und rufen Sie sie auf ImageMagick.phpoder führen Sie sie aus. Sie erhalten alle Informationen, die Sie benötigen ... hoffentlich ...

Viel Glück.

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

?>
konvertiere ein pdf
quelle
1
konvertiere ein pdf: Viele thx. schönes Skript. funktionierte sowohl bei Hostgator als auch bei Godaddy gut ... nicht so cool wie Cloud oder AWS, aber im Rahmen des Budgets meiner kleinen Geschäftskunden.
Zipzit
1
Nach Stunden ... hier isst Google Folgendes: MediaWiki Fehler beim Erstellen der Miniaturansicht: sh: / usr / local / bin / convert: Keine solche Datei oder kein solches Verzeichnis
Martin
Meins ist eine .NET- und Sitecore-basierte Anwendung. Wie überprüfe ich, ob meine Anwendung ImageMagick verwendet oder nicht?
Natasha Batra
6

In Bash können Sie überprüfen, ob Imagick ein installiertes Modul ist:

$ php -m | grep imagick

Wenn die Antwort leer ist, wird sie nicht installiert.

Mr.Yellow
quelle
1

Wenn Ihr ISP / Hosting-Dienst ImageMagick installiert und seinen Speicherort in die Umgebungsvariable PATH eingefügt hat, können Sie feststellen, welche Versionen installiert sind und wo:

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

Um nur die IMagick PHP-Erweiterung (nicht die vollständige ImageMagick-Suite) zu testen, speichern Sie Folgendes als PHP-Datei (testImagick.php) und führen Sie sie dann über die Konsole aus: 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";

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

Atyachin
quelle
0

Denken Sie daran, dass Sie nach der Installation von Imagick (oder einem anderen PHP-Modul) Ihren Webserver und / oder php-fpm neu starten müssen, wenn Sie ihn verwenden, damit das Modul in phpinfo () angezeigt wird.

Grindlay
quelle