Verifikasi instalasi ImageMagick


88

Hosting web saya mengatakan ImageMagic telah diinstal sebelumnya di server. Saya melakukan pencarian cepat untuk "ImageMagick" di output phpinfo () dan saya tidak menemukan apa pun. Saya tidak bisa SSH di server jadi apakah ada cara di PHP saya bisa memverifikasi instalasi?

Jawaban:


48

Coba ini:

<?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
ini menguji apakah aplikasi ImageMagick diinstal, bukan modul PHP
bcosca

Kode pengembalian versi adalah 0 * Versi: ImageMagick 6.3.7 08/09/09 Q16 imagemagick.org * Hak Cipta: Hak Cipta (C) 1999-2008 ImageMagick Studio LLC
Desmond Liang

inilah yang dikembalikan halaman. tampaknya mengalami masalah saat mengembalikan versi tetapi mengembalikan info hak cipta.
Desmond Liang

Jawabannya mungkin berhasil, tetapi dua di bawah ini jauh lebih sederhana, lebih mudah, dan jelas. Apakah ini alasan yang bagus untuk tidak memilih yang satu ini?
Sophivorus

2
Ini adalah solusi yang berhasil untuk orang yang mengajukan pertanyaan. Suara negatif bukan untuk jawaban yang benar. Jika Anda memiliki pertanyaan tentang etiket, Anda harus menanyakannya di meta.stackoverflow.com
wajiw

149

Ini sesingkat dan semanis yang bisa didapat:

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

4
Demikian pula, dari baris perintah:php -r 'echo "imagick is ".(extension_loaded("imagick")?"":"not ")."installed\n";'
Jon Gibbins

40

EDIT: Info dan skrip di bawah ini hanya berlaku untuk kelas iMagick - yang tidak ditambahkan secara default dengan ImageMagick !!!

Jika saya ingin tahu apakah imagemagick diinstal dan benar-benar berfungsi sebagai ekstensi php, saya menempelkan cuplikan ini ke file yang dapat diakses 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;
?>

Anda akan melihat grafik hello world:

masukkan deskripsi gambar di sini


22

Dalam pesta:

$ convert -version

atau

$ /usr/local/bin/convert -version

Tidak perlu menulis file PHP apa pun hanya untuk memeriksa.


4
Hanya untuk menyelamatkan orang lain yang harus mencarinya - ubah perintah shell imagick menginstal sehingga perintah di atas berbicara langsung untuk memeriksa apakah ada di sana +1
Bananaapple

18

Anda dapat dengan mudah memeriksa kelas Imagick di PHP.

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

9
penting: Kadang-kadang ini mengembalikan FALSE tetapi extension_loaded('imagick')mengembalikan TRUE!, jadi saya kira lebih baik adalah:if( extension_loaded('imagick') || class_exists("Imagick") ){ /*do Imagick*/ }
jave.

9

Di Bash Anda dapat memeriksa apakah Imagick adalah modul yang diinstal:

$ php -m | grep imagick

Jika responsnya kosong, itu tidak diinstal.


7

Coba solusi satu kali ini yang akan mencari tahu di mana ImageMagick berada, jika Anda memiliki akses ke sana ...

Ini menemukan semua versi di hosting GoDaddy saya.

Unggah file ini ke server Anda dan beri nama ImageMagick.phpatau sesuatu lalu jalankan. Anda akan mendapatkan semua info yang Anda butuhkan ... semoga ...

Semoga berhasil.

<?
/*
// 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
mengonversi pdf: Banyak thx. naskah yang bagus. bekerja dengan baik di hostgator dan GoDaddy ... tidak sekeren cloud atau AWS, tetapi sesuai dengan anggaran pelanggan bisnis kecil saya.
zipzit

1
Setelah jam kerja ... di sini Google makan ini: Kesalahan MediaWiki saat membuat thumbnail: sh: / usr / local / bin / convert: Tidak ada file atau direktori seperti itu
Martin

Milik saya adalah aplikasi berbasis .NET dan Sitecore. Bagaimana cara memeriksa aplikasi saya jika menggunakan ImageMagick atau tidak?
Natasha Batra

1

Jika ISP / layanan hosting Anda telah menginstal ImageMagick dan meletakkan lokasinya di variabel lingkungan PATH, Anda dapat menemukan versi apa yang diinstal dan di mana menggunakan:

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

1

Untuk menguji hanya ekstensi IMagick PHP (bukan rangkaian lengkap ImageMagick), simpan berikut ini sebagai file PHP (testImagick.php) dan kemudian jalankan dari konsol: 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";

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


0

Ingatlah bahwa setelah menginstal Imagick (atau memang modul PHP apa pun) Anda perlu me-restart server web Anda dan / atau php-fpm jika Anda menggunakannya, agar modul tersebut muncul di phpinfo ().

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.