XAMPPのPHPでImageMagick/imagickが動いたやりかた
いろいろ失敗しつづけて3日間、XAMPPのPHPでImageMagick/imagickがやっと動いた。ImageMagickは画像を編集するソフトウェアで、imagickはそれをPHPで利用するための関数ということみたい。んで、それをXAMPPのPHPで利用するためのインストール作業が全然うまく行かなかったのだ。
上手くいかないのでこんなエラーが出る。
Fatal error: Class ‘Imagick’ not found in ~~~
当方の環境は Windows7 64bit、XAMPP v5.6.3 (PHP 5.6.3)。
ImageMagick/imagickをPHPで利用するためには、まずImageMagickをインストールして、さらにPHPのextensionにphp_imagick.dllを入れてphp.iniの設定を変える必要がある。
まずImageMagickの公式サイトにImageMagick-6.9.1-1-Q16-x64-dll.exeがあるけど、これはPHPで動かないみたい。php.netにあるのもダメだった。
うまく行ったのは、下記サイトで配布されているImageMagick-6.6.2-10-Q16-windows-dll.exeのファイル。
しかしphp_imagick.dllを、このサイトの説明にある配布サイトからダウンロードするとXAMPP起動時にエラーのアラートが出る。
MagickSmushImages がダイナミックリンクライブラリ CORE_RL_wand_.dllから見つかりませんでした。
うまく行ったのははPECLのサイトにある5.6 Thread Safe (TS) x86 (php_imagick-3.1.2-5.6-ts-vc11-x86.zip)のファイル。これを解凍し、フォルダの中からphp_imagick.dllをC:\xampp\php\extへ入れて、php.iniに
extension=php_imagick.dll
と追記すればオッケー。
これで当初の Class ‘Imagick’ not found のエラーは出なくなったが、PHPマニュアルにあるこのサンプルスクリプトが動かない。エラー内容は下記の通り。
Fatal error: Uncaught exception ‘ImagickException’ with message ‘unable to open image `image.jpg’: No such file or directory @ error/blob.c/OpenBlob/2514′ in C:\xampp\htdocs\(略)\sample.php:5 Stack trace: #0 C:\xampp\htdocs\(略)\sample.php(5): Imagick->__construct(‘image.jpg’) #1 {main} thrown in C:\xampp\htdocs\(略)\sample.php on line 5
このエラーは、ここを参考に画像を絶対位置で指定したら出なくなった。
$image = new Imagick("C:/xampp/htdocs/(中略)/image.jpg");
なお、PECLにあるこれ以外のphp_imagick.dllはどれも何かしらのエラーで動かなかった。
なんだかよくわからないことだらけだが、まずは動いたのでこれでいいことにしよう。
さくらのレンタルサーバー・ライトでImageMagick/imagickを使う方法
サーバ管理画面のPHP設定の編集で、php.iniに
extension = imagick.so
を追記するだけ。さくらではサンプルスクリプトがそのままで動いた。絶対位置指定しないで。