[PHP] Windows7+PHPで Imagick が使えない件

この記事は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 とかの仮想環境をつくって、そこで動かす方が良いのかもしれません。

タイトルとURLをコピーしました