ImageMagick kurulumunu doğrulayın


88

Web barındırma hizmetim, ImageMagic'in sunucuya önceden yüklenmiş olduğunu söyledi. Phpinfo () çıktısında "ImageMagick" için hızlı bir arama yaptım ve hiçbir şey bulamadım. Sunucuda SSH yapamıyorum, bu yüzden PHP'de kurulumu doğrulayabilmemin bir yolu var mı?

Yanıtlar:


48

Bunu dene:

<?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
bu, PHP modülünün değil ImageMagick uygulamasının kurulu olup olmadığını test eder
bcosca

Sürüm dönüş kodu 0'dır * Sürüm: ImageMagick 6.3.7 08/09/09 Q16 imagemagick.org * Telif Hakkı: Telif Hakkı (C) 1999-2008 ImageMagick Studio LLC
Desmond Liang

sayfanın döndürdüğü budur. Görünüşe göre sürümü iade etmekte sorun yaşıyor, ancak bir şekilde telif hakkı bilgilerini döndürüyor.
Desmond Liang

Cevap işe yarayabilir, ancak aşağıdaki ikisi çok daha basit, daha kolay ve açıktır. Bu, buna olumsuz oy vermek için iyi bir neden mi?
Sophivorus

2
Soruyu soran kişi için işe yarayan bir çözüm. Aşağı oylama doğru cevaplar için değildir. Görgü kuralları hakkında bir sorunuz varsa, bunu meta.stackoverflow.com'da sormalısınız
wajiw

149

Bu olabildiğince kısa ve tatlı:

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

4
Benzer şekilde, komut satırından:php -r 'echo "imagick is ".(extension_loaded("imagick")?"":"not ")."installed\n";'
Jon Gibbins

40

DÜZENLEME: Aşağıdaki bilgi ve komut dosyası yalnızca iMagick sınıfı için geçerlidir - bu, ImageMagick ile varsayılan olarak eklenmez !!!

İmagemagick'in kurulu olup olmadığını ve aslında bir php uzantısı olarak çalışıp çalışmadığını öğrenmek istersem, bu pasajı web'den erişilebilen bir dosyaya yapıştırırım.

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

Merhaba dünya grafiği görmelisiniz:

görüntü açıklamasını buraya girin


22

Bash'de:

$ convert -version

veya

$ /usr/local/bin/convert -version

Sadece kontrol etmek için herhangi bir PHP dosyası yazmaya gerek yok.


4
Sadece bakmak zorunda kalan herkesi kurtarmak için - dönüştürme, imagick'in yüklediği kabuk komutudur, böylece yukarıda orada olup olmadığını kontrol etmek için doğrudan onunla konuşur +1
Bananaapple

18

PHP'deki Imagick sınıfını kolayca kontrol edebilirsiniz.

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

9
önemli: Bazen bu YANLIŞ döndürür ama extension_loaded('imagick')DOĞRU döndürür!, bu yüzden sanırım daha iyisi:if( extension_loaded('imagick') || class_exists("Imagick") ){ /*do Imagick*/ }
jave.web

9

Bash'de Imagick'in kurulu bir modül olup olmadığını kontrol edebilirsiniz:

$ php -m | grep imagick

Yanıt boşsa, kurulu değildir.


7

Erişiminiz varsa, ImageMagick'in nerede olduğunu bulması gereken bu tek seferlik çözümü deneyin ...

Bu, Godaddy sunucumdaki tüm sürümleri buldu.

Bu dosyayı sunucunuza yükleyin ve çağırın ImageMagick.phpveya başka bir şey daha sonra çalıştırın. İhtiyacınız olan tüm bilgileri alacaksınız ... umarım ...

İyi şanslar.

<?
/*
// 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
pdf dönüştürmek: Many thx. güzel senaryo. hem hostgator hem de godaddy üzerinde iyi çalıştı ... bulut veya AWS kadar havalı değil, küçük işletme müşterilerimin bütçesi dahilinde.
zipzit

1
Saatler sonra ... burada Google şunu yiyin: MediaWiki Küçük resim oluşturulurken hata oluştu: sh: / usr / local / bin / convert: Böyle bir dosya veya dizin yok
Martin

Mine .NET ve Sitecore tabanlı bir uygulamadır. ImageMagick kullanıp kullanmadığımı nasıl kontrol ederim?
Natasha Batra

1

ISS'niz / barındırma hizmetiniz ImageMagick'i yüklediyse ve konumunu PATH ortam değişkenine koyduysa, hangi sürümlerin kurulu olduğunu ve nerede kullanıldığını bulabilirsiniz:

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

1

Yalnızca IMagick PHP uzantısını (tam ImageMagick paketini değil) test etmek için, aşağıdakileri bir PHP dosyası (testImagick.php) olarak kaydedin ve ardından konsoldan çalıştırın: 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";

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


0

Imagick'i (veya herhangi bir PHP modülünü) kurduktan sonra, modülün phpinfo () içinde görünmesi için web sunucunuzu ve / veya kullanıyorsanız php-fpm'yi yeniden başlatmanız gerektiğini unutmayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.