Sprawdź instalację programu ImageMagick

88

Mój hosting powiedział, że ImageMagic został wstępnie zainstalowany na serwerze. Szybko wyszukałem "ImageMagick" w wyniku phpinfo () i nic nie znalazłem. Nie mogę użyć SSH na serwerze, więc czy w PHP jest sposób, aby zweryfikować instalację?

Desmond Liang
źródło

Odpowiedzi:

48

Spróbuj tego:

<?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
źródło
23
test ten sprawdza, czy zainstalowana jest aplikacja ImageMagick, a nie moduł PHP
bcosca
Wersja kod zwrotny jest 0 * Wersja: ImageMagick 6.3.7 09.08.09 Q16 imagemagick.org * Prawa autorskie: Copyright (C) 1999-2008 ImageMagick Studio LLC
Desmond Liang
oto, co zwraca strona. wygląda na to, że ma problem ze zwrotem wersji, ale w jakiś sposób zwraca informacje o prawach autorskich.
Desmond Liang
Odpowiedź może działać, ale dwa poniższe są znacznie prostsze, łatwiejsze i oczywiste. Czy to dobry powód do odrzucenia tego?
Sophivorus
2
To rozwiązanie, które sprawdziło się u osoby zadającej pytanie. Głosowanie przeciwne nie oznacza poprawnych odpowiedzi. Jeśli masz pytanie dotyczące etykiety, zadaj je na meta.stackoverflow.com
wajiw
149

To jest tak krótkie i słodkie, jak to tylko możliwe:

if (!extension_loaded('imagick'))
    echo 'imagick not installed';
bcosca
źródło
4
Podobnie z wiersza poleceń:php -r 'echo "imagick is ".(extension_loaded("imagick")?"":"not ")."installed\n";'
Jon Gibbins
40

EDYCJA: Poniższe informacje i skrypt dotyczą tylko klasy iMagick - która nie jest dodawana domyślnie w ImageMagick !!!

Jeśli chcę wiedzieć, czy imagemagick jest zainstalowany i faktycznie działa jako rozszerzenie php, wklejam ten fragment do pliku dostępnego w sieci

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

Powinieneś zobaczyć grafikę Hello world:

wprowadź opis obrazu tutaj

Nate Flink
źródło
22

W bash:

$ convert -version

lub

$ /usr/local/bin/convert -version

Nie ma potrzeby pisania żadnego pliku PHP tylko do sprawdzenia.

Ashraf Slamang
źródło
4
Tylko po to, aby nikt inny nie musiał tego sprawdzać - konwertuj to polecenie powłoki imagick instaluje się, więc powyższe mówi bezpośrednio z nim, aby sprawdzić, czy tam jest +1
Bananaapple
18

Możesz łatwo sprawdzić klasę Imagick w PHP.

if( class_exists("Imagick") )
{
    //Imagick is installed
}
Spencer Hakim
źródło
9
ważne: Czasami zwraca to FALSE, ale extension_loaded('imagick')zwraca TRUE!, więc myślę, że lepiej jest:if( extension_loaded('imagick') || class_exists("Imagick") ){ /*do Imagick*/ }
jave.web
9

W Bash możesz sprawdzić, czy Imagick jest zainstalowanym modułem:

$ php -m | grep imagick

Jeśli odpowiedź jest pusta, nie jest instalowana.

Panie Żółty
źródło
7

Wypróbuj to jednorazowe rozwiązanie, które powinno dowiedzieć się, gdzie jest ImageMagick, jeśli masz do niego dostęp ...

To znalazło wszystkie wersje na moim hostingu GoDaddy.

Prześlij ten plik na swój serwer i wywołaj go, ImageMagick.phpa następnie uruchom. Otrzymasz wszystkie potrzebne informacje ... miejmy nadzieję ...

Powodzenia.

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

?>
przekonwertować plik pdf
źródło
1
przekonwertować plik pdf: wiele thx. ładny scenariusz. działał dobrze zarówno na hostgatorze, jak i na GoDaddy ... nie tak fajny jak chmura lub AWS, ale w ramach budżetu moich małych klientów biznesowych.
zipzit
1
Po godzinach ... tutaj Google zjadaj to: Błąd MediaWiki podczas tworzenia miniatury: sh: / usr / local / bin / convert: Brak takiego pliku lub katalogu
Martin
Moja jest aplikacją opartą na platformach .NET i Sitecore. Jak mogę sprawdzić, czy moja aplikacja używa ImageMagick, czy nie?
Natasha Batra
1

Jeśli Twój dostawca usług internetowych / usługa hostingowa zainstalował ImageMagick i umieścił jego lokalizację w zmiennej środowiskowej PATH, możesz sprawdzić, które wersje są zainstalowane i gdzie, używając:

<?php
echo "<pre>";
system("type -a convert");  
echo "</pre>";
?> 
fmw42
źródło
1

Aby przetestować tylko rozszerzenie IMagick PHP (nie cały pakiet ImageMagick), zapisz poniższy plik jako plik PHP (testImagick.php), a następnie uruchom go z konsoli: 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";

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

atyachin
źródło
0

Pamiętaj, że po zainstalowaniu Imagicka (a właściwie dowolnego modułu PHP) musisz zrestartować serwer WWW i / lub php-fpm, jeśli go używasz, aby moduł pojawił się w phpinfo ().

Grindlay
źródło