Xác minh cài đặt ImageMagick


87

Lưu trữ web của tôi cho biết ImageMagic đã được cài đặt sẵn trên máy chủ. Tôi đã tìm kiếm nhanh "ImageMagick" trong đầu ra của phpinfo () và không tìm thấy gì. Tôi không thể SSH trong máy chủ, vậy có cách nào trong PHP để tôi có thể xác minh cài đặt không?

Câu trả lời:


48

Thử đi:

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

22
xét nghiệm này nếu ứng dụng ImageMagick được cài đặt, không phải là module PHP
bcosca

Phiên bản mã trở lại là 0 * Version: ImageMagick 6.3.7 08/09/09 Q16 imagemagick.org * Bản quyền: Bản quyền (C) 1999-2008 ImageMagick Studio LLC
Desmond Liang

đây là những gì trang trả về. Có vẻ như nó đang gặp sự cố khi trả lại phiên bản nhưng bằng cách nào đó trả lại thông tin bản quyền.
Desmond Liang

Câu trả lời có thể hiệu quả, nhưng hai cách dưới đây đơn giản, dễ dàng và rõ ràng hơn nhiều. Đây có phải là lý do chính đáng để bỏ phiếu không?
Sophivorus

2
Đó là một giải pháp hiệu quả cho người đặt câu hỏi. Bỏ phiếu từ chối không dành cho câu trả lời đúng. Nếu bạn có thắc mắc về phép xã giao bạn nên yêu cầu nó trong meta.stackoverflow.com
wajiw

148

Điều này ngắn gọn và ngọt ngào nhất có thể:

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

3
Tương tự, từ dòng lệnh:php -r 'echo "imagick is ".(extension_loaded("imagick")?"":"not ")."installed\n";'
Jon Gibbins

40

CHỈNH SỬA: Thông tin và tập lệnh bên dưới chỉ áp dụng cho lớp iMagick - không được thêm vào theo mặc định với ImageMagick !!!

Nếu tôi muốn biết liệu imagemagick đã được cài đặt và thực sự hoạt động như một phần mở rộng php hay chưa, tôi dán đoạn mã này vào một tệp có thể truy cập 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;
?>

Bạn sẽ thấy hình ảnh hello world:

nhập mô tả hình ảnh ở đây


22

Trong bash:

$ convert -version

hoặc là

$ /usr/local/bin/convert -version

Không cần phải viết bất kỳ tệp PHP nào chỉ để kiểm tra.


4
Chỉ cần tiết kiệm bất cứ ai khác phải nhìn nó lên - chuyển đổi là cài đặt lệnh shell imagick để ở trên nói chuyện với nó trực tiếp để kiểm tra xem nó có 1
Bananaapple

18

Bạn có thể dễ dàng kiểm tra lớp Imagick trong PHP.

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

9
quan trọng: Đôi khi điều này trở về FALSE nhưng extension_loaded('imagick')! nhuận TRUE, vì vậy tôi đoán tốt hơn là:if( extension_loaded('imagick') || class_exists("Imagick") ){ /*do Imagick*/ }
jave.web

8

Trong Bash, bạn có thể kiểm tra xem Imagick có phải là một mô-đun được cài đặt hay không:

$ php -m | grep imagick

Nếu phản hồi trống, nó không được cài đặt.


7

Hãy thử giải pháp một lần này để tìm ra ImageMagick ở đâu, nếu bạn có quyền truy cập vào nó ...

Điều này tìm thấy tất cả các phiên bản trên lưu trữ Godaddy của tôi.

Tải tệp này lên máy chủ của bạn và gọi nó ImageMagick.phphoặc cái gì đó sau đó chạy nó. Bạn sẽ nhận được tất cả thông tin bạn cần ... hy vọng ...

Chúc may mắn.

<?
/*
// 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
chuyển đổi một pdf: Nhiều thx. kịch bản hay. hoạt động tốt trên cả hostgator và godaddy ... không thú vị như đám mây hay AWS, nhưng trong phạm vi ngân sách của khách hàng doanh nghiệp nhỏ của tôi.
zipzit

1
Sau giờ làm ... đây Google ăn này: MediaWiki Lỗi tạo thumbnail: sh: / usr / local / bin / chuyển đổi: Không có tập tin hoặc thư mục
Martin

Của tôi là một ứng dụng dựa trên .NET và Sitecore. Làm cách nào để kiểm tra xem ứng dụng của tôi có đang sử dụng ImageMagick hay không?
Natasha Batra

1

Nếu ISP / dịch vụ lưu trữ của bạn đã cài đặt ImageMagick và đặt vị trí của nó trong biến môi trường PATH, bạn có thể tìm thấy phiên bản nào đã được cài đặt và nơi sử dụng:

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

1

Để chỉ kiểm tra phần mở rộng IMagick PHP (không phải bộ ImageMagick đầy đủ), hãy lưu phần sau dưới dạng tệp PHP (testImagick.php) và sau đó chạy nó từ 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";

tín dụng: https://mlocati.github.io/articles/php-windows-imagick.html


0

Hãy nhớ rằng sau khi cài đặt Imagick (hoặc thực sự là bất kỳ mô-đun PHP nào), bạn cần khởi động lại máy chủ web của mình và / hoặc php-fpm nếu bạn đang sử dụng nó, để mô-đun xuất hiện trong phpinfo ().

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.