この記事は3年以上前に書かれた記事です。情報が古い可能性があります。
この記事で書かれている問題は未解決です。
Windows 上で動く PHP で Imagick が使えない。別にサーバーで使えたら良いんじゃないの、と思われるかもしれませんが、ローカル環境で動作確認できたら素敵じゃないですか。そう思うのは私だけではないはず。少なくとも、ググってここにたどり着いた人は、同じように思ったはず。
ですが、この問題、残念ながら私は解決できてません!(すみません!)
でも、一応問題を共有しておこうかなと、
まず、環境はこう。
- Windows 7 Professional
- PHP 5.2.14
- Apache 2.2.x
- ImageMagick 6.6.5
ただ、この場合 Apache は多分関係ない。だって、
php -v
ってやっただけで発症するんだから。
手順はこう。
1. Apache 2.2 をインストール。
これは普通にインスコ。多分今回の問題に関係ないので詳細略。
2. PHP 5.2.14 をインストール。
http://www.php.net/downloads.php から PHP 5.2.14 zip package というのをダウンロード。インスコ。ここで5.3.x を使わないのは、5.3系だと PHP単独ですら上手く起動できない感じだったから。5.2系ならPHPだけなら問題なく動作するので問題切り分けの為に5.2系にする。あと、Installer もあるけど、Installerで入れると、ext 周りが全く入ってないので最初からextも入ってるzipの方を採用(しかし、何でInstallerにext入れてないんだろ?)。ここは C:\php5 に入れる。このパスは環境変数 PATH に追加する。
3. ImageMagick 6.6.5 をインストール。
http://imagemagick.org/download/www/binary-releases.html#windows から ImageMagick-6.6.5-4-Q16-windows-dll.exe というのをダウンロード。インスコ。スペースを含むようなパス(C:\Program Files とか)にインスコすると調子が良くないらしいので、C:\ImageMagick に入れる。あと、MAGICK_HOME という環境変数をつくってこのパスを設定、それを PATH に追加する。
4. Imagick を配備。
以前の PHP には ext に最初から php_imagick.dll も入ってたんだけど、5.2.14 のパッケージには入ってなかった。ただ、従来も、最初から入ってる php_imagick.dll は上手く動かないという報告が多かった。で、大抵はどっかからダウンロードしてきて配備する。いろいろググると、以下のようなところがあたる。
http://valokuva.org/outside-blog-content/imagick-windows-builds/080709/
http://valokuva.org/builds/
どっちも同じドメインだけど、配布物が違うのはこれ如何に?まぁそれは置いといて、結論をいうと、どれを使ってもダメでした。とりあえずここは上のサイトから一番新しいと思われる php_imagick_dyn-Q16.dll というのをダウンロードして、C:\php\ext にコピー。
5. VC++ 2008 再頒布可能パッケージをインストール。
どうも 上記の dll はVCでコンパイルされていて、それをうまく動かすにはこれが必要らしい。
http://www.microsoft.com/downloads/details.aspx?familyid=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=ja
6. php.ini 書き換え。
extension_dir = “c:/php5/ext”
extension=php_imagick_dyn-Q16.dll
という項目を追加する。
これで、コマンドプロンプトから
php -v
と打ち込むと、バージョン情報自体は表示されるが、ほどなく
CLIは動作を停止しました
というダイアログも表示される。
このキーワードでググっても、php_mysqli.dll が悪さをしてるんだというようなものばかりひっかかって、Imagick の話はない。php_mysqli.dll はすこぶる元気に動いてるんですが。当然、php_mysqli.dllをコメントアウトしても状況変わらず。php_imagick_dyn-Q16.dllをコメントアウトすれば、上記メッセージは出ない(つまり、正常動作)。
ちなみに、php_imagick_dyn-Q16.dll の代わりに php_imagick_ts.dll を使うと、
—————————
php.exe – エントリ ポイントが見つかりません
—————————
プロシージャ エントリ ポイント zend_replace_error_handling がダイナミック リンク ライブラリ php5ts.dll から見つかりませんでした。
というようなメッセージになる。
当然、この状態で Apache を起動しても、PHPから Imagick がロードできない。
かなり調べたんだけど、全く情報が得られず。
もう Windows 上で動作させるのは諦めて、Linux とかの仮想環境をつくって、そこで動かす方が良いのかもしれません。