Eclipse Luna SR2 (4.4.2) 上のPHPでImageMagickを動かす

##初めに
3日かかった。GraphicsMagick合わせると、5日…
記録の為に記載するが、誤り等あれば指摘して下さい。

##インストール環境
Windows 7 Professional SP1 64ビット + Eclipse Luna SR2 (4.4.2)。

##必要な作業の概要

###1. ImageMagickのインストール
ftp://sunsite.icm.edu.pl/packages/ImageMagick/binaries/
より
ImageMagick-6.7.9-0-Q16-windows-dll.exeインストール。
インストール先は、C:\ImageMagick。
オプションは、関連ファイルの紐付け以外の全て。

###2. 環境変数の登録
自動的に追加される事もあるが、Pathの先頭にC:\ImageMagickを追加、
MAGICK_HOMEを新設し、C:\ImageMagick\modules\codersを指定した

###3. Microsoft Visual C++ Redistributableのインストール
おそらくはMicrosoft Visual C++ 2008 x86 Redistributableだけあれば動くと思われる。

###4. PECL imagickのインストール
https://pecl.php.net/package/imagick
から、
https://pecl.php.net/package/imagick/3.2.0b2/windows
へ行き、
php_imagick-3.2.0b2-5.4-ts-vc9-x86.zip
をダウンロード、展開して、
php_imagick.dllをC:\pleiades\xampp\php\extに、
CORE_RL_bzlib_.dll、CORE_RL_glib_.dll、CORE_RL_lcms_.dll、CORE_RL_lqr_.dll、CORE_RL_magick_.dll、CORE_RL_ttf_.dll、CORE_RL_wand_.dll、CORE_RL_zlib_.dllをC:\pleiades\xampp\phpに、コピーする。

###5. php.iniへの記載
ファイルの最後に
[PECL]
extension=php_imagick.dll
記載。

###6. OSごと再起動

##上記の、おのおのの理由を、推測を混ぜて。

###1. ImageMagickのインストール
####バージョンの理由。
最新版だと動かない、の報告が各所に散見された。
バージョン選定に悩んだが、当方、開発をWindows、実稼働をLinuxで行おうと考えており、
CentOS6: ImageMagick-6.7.2.7-2.el6.x86_64
CentOS7: ImageMagick-6.7.8.9-10.el7.x86_64
の為、ImageMagick-6.7.9-0-Q16-windows-dll.exeを選んでいる。
もっと新しくても動くかもしれない。
また、Windowsは64bitなのだが、Eclipseは32bitの為、ImageMagickも32bitの必要がある。
さらに、Eclipse Luna SR2 (4.4.2)のPHPはスレッドセーフ版の為、ts版である必要がある。

####ダウンロード元及びバージョンの理由。
ImageMagickのオリジナルサイトには、最新版しか無い。
探した末、オリジナルサイトのリンクにあったmirrorである
ftp://sunsite.icm.edu.pl/packages/ImageMagick/binaries/
よりダウンロードした。

####インストール先の理由。
デフォルトでインストールすると、C:\Program Files (x86)にインストールしようとするが、
パスにスペースが入ると稼働しない模様。下記サイトに記載があった。
http://kyle-in-jp.blogspot.jp/2008/04/windowsimagemagickphp.html
しばし思案するに、PHPで扱いが微妙な文字は入れてはいけないのでは無いかと思いつき、念の為、ハイフンも削除した。

###2. 環境変数の登録
GrapchicsMagickのインストールを先に行っていた事もあるが、どうもPHPでImageMagickを読み込む時にPathの先頭から読むらしく、GrapchicsMagickのdllを読み込んで誤作動していた模様。
安全の為、Pathの先頭に書くかと。
MAGICK_HOMEは正直よくわからない。
また、dllの設置によっては、パスの設定は不要…かもしれない。

###3. Microsoft Visual C++ Redistributableのインストール
試行錯誤中に、いろいろ入っており、他にも必要かも知れない。
Microsoft Visual C++ 2005 Redistributable
Microsoft Visual C++ 2005 Redistributable (x64)
Microsoft Visual C++ 2008 x64 Redistributable
Microsoft Visual C++ 2008 x86 Redistributable
Microsoft Visual C++ 2010 x64 Redistributable
Microsoft Visual C++ 2010 x86 Redistributable

###4. PECL imagickのインストール
http://stackoverflow.com/questions/20976779/how-to-install-imagemagick-to-use-with-php-on-windows-7-3
の動作報告を眺めていて、
http://www.peewit.fr/imagick/
を見た所、下記に気づいた(遅いって)。
Imagick 3.3.0RC2/PHP 7.0 (7.0.0RC5)/MSVC14 (Visual C++ 2015)/x64
Imagick 3.2.0RC1/PHP 5.6/MSVC11 (Visual C++ 2012)/x86
Imagick 3.2.0RC1/PHP 5.5/MSVC11 (Visual C++ 2012)/x86
Imagick 3.2.0RC1/PHP 5.4/MSVC9 (Visual C++ 2008)/x86
つまり、VC9版のPHPを導入していて、バージョンが5.4な、当方の環境の場合、3.2.0を入れる必要があると。
https://pecl.php.net/package/imagick
で対応を眺めた所、dllがあって、3.2.0RC1以下でDLLがあったのが3.2.0b2、という訳だ。

なお、http://www.peewit.fr/imagick/に従うなら、下記の構成が鉄板かと。
Imagick 3.2.0RC1/PHP 5.6/MSVC11 (Visual C++ 2012)/x86
Tested under Windows 7 Ultimate Edition x64 SP1 with:
    Nginx 1.7.7 (Win32 x86 with openssl 1.0.1j)
    PHP 5.6.4 VC11 x86 Thread Safe (Dec 17 2014 13:21:16)
    ImageMagick 6.8.6-8 Win32 at 16 bits-per-pixel (2013-08-01)

###5. php.iniへの記載
http://www.kaasan.info/archives/272
に従ってみた。[PECL]必要かよくわかりません。

###6. OSごと再起動
おそらく、OSの環境変数～PHPの起動で読み込まれるPathとMAGIC_HOMEが、OSの再起動により反映されるから、であり、
いわばおまじない、であり、
もしかすると各種dllをパスの通ったフォルダに入れてあれば不要かも…しれない。