XAMPP に ImageMagick をインストールする方法【2023年改訂版】
以前に「XAMPP に ImageMagick をインストールする方法」という記事を書いていたのですが、 最近いろいろと調べていくうちにその記事に少し誤りがあったことが判明したので、 その訂正と公式ではまだサポートされていない PHP 8.2、PHP 8.3 にインストールする方法を記載したいと思います。
そもそもの誤り
以前の記事では、ImageMagic 本体を別途インストールする必要があると書いていたのですが、 実は imagick のパッケージには PHP 拡張用の DLL と、ImageMagic 本体用の DLL の両方が含まれており、 ImageMagic 本体を別途インストールせずとも、imagick に付属している DLL に PATH を通すと動きます。 imagick に同梱されている ImageMagic 本体用の DLL を使用すれば、imagick とのバージョンの違いも発生しなくなります。 そのため、ImageMagic 本体を別途インストールするのではなく、同梱の DLL を使った方が良いです。 ということで、それを前提に改めてインストール方法をまとめてみます。
imagick をダウンロードする
上述の通り、imagick のパッケージには、PHP 拡張用の DLL(php_imagick.dll)と、 ImageMagic 本体用の DLL(CORE_~.dll や IM_~.dll など) の両方が含まれていますので、 まずは imagick のパッケージをダウンロードしましょう。
PHP 8.1 以下の場合
現在のところ公式の PECL では、PHP 8.1 まで対応されていますので、PECL の公式サイトからダウンロードできます。
ダウンロードする DLL ファイルは、インストールする環境の PHP によって異なりますので、環境に合わせて選択してください。
phpinfo()
を表示して確認しましょう。
「Architecture」欄や「PHP Extension Build」欄を見れば、どの DLL ファイルをダウンロードすれば良いかわかると思います。
https://pecl.php.net/package/imagick
PHP 8.2、PHP 8.3 の場合
現在のところ公式の PECL では、PHP 8.2、PHP 8.3 は対応されていません。 しかしながら、GitHub 上では有志の方々が PHP 8.2 と PHP 8.3 用にビルドしてくれています。 とはいえ非公式のビルドとなりますので、ご自身の責任で使用してください。 本番環境などでは使用しないようにしましょう。 もし公式で対応されればそちらを使用するようにしましょう。
ImageMagic 本体用の DLL に PATH を通す
imagick のパッケージをダウンロードして解凍したら、そのフォルダをどこか邪魔にならないディレクトリへ移動させます。 場所はどこでも良いのですが(PATH を通すので)、この記事では XAMPP の php の ext フォルダに入れることにします(例:"C:\xampp\php\ext\php_imagick-3.7.0-8.1-ts-vs16-x64")。
次に、PHP 拡張用の DLL(php_imagick.dll)から ImageMagic 本体用の DLL を読み込めるようにするために PATH を通す必要があります。 環境変数は「設定>システム>詳細情報>システムの詳細設定>環境変数」から変更できます。 環境変数の PATH に、そのディレクトリのパスを追加します。 追加できたら Windows を再起動して反映させます。
PHP に imagick をインストールする
次は PHP の設定です。 PHP 拡張用の DLL(php_imagick.dll)を読み込めるように設定します。
PHP 拡張用の DLL を移動させる
imagick のパッケージの中にある PHP 拡張用の DLL(php_imagick.dll)を、 XAMPP の PHP の ext ディレクトリ(例:"C:/xampp/php/ext")に持っていきます。
PHP 8.2、PHP 8.3 用の非公式ビルドを使用している場合
PHP 8.2、PHP 8.3 用の非公式ビルドを使用している場合は、 TS(Thread Safe)版と NTS(Non Thread Safe)版でファイル名が異なりますので、 使用する方のファイルを移動させて、ファイル名を "php_imagick.dll" に変更します。
TS(Thread Safe)版 | php_imagick_ts.dll |
---|---|
NTS(Non Thread Safe)版 | php_imagick_nts.dll |
php.ini を変更する
次に、先ほど ext ディレクトリに追加した "php_imagick.dll" ファイルを PHP が読み込むように php.ini ファイル(例:"C:/xampp/php/php.ini") に追記し、Apache を再起動します。
extension=imagick
インストールできたか確認する
phpinfo()
を表示し、imagick の項目が表示されていればインストール完了です。
ImageMagic 本体用の DLL と PHP 拡張用の DLL の両方のインストールが完了していなければ表示されないので注意してください。
「Imagick compiled with ImageMagick version」の欄が imagick の想定している ImageMagick のバージョンで、 「Imagick using ImageMagick library version」の欄が ImageMagick 本体の ImageMagick のバージョンです。 この2つが一致しているか確認しましょう。
PHP から使用する
Imagick クラスが、PHP の組み込みのクラスとして使用できるようになってます。
<?php $imagick = new Imagick(__DIR__ . '/image.jpg'); $imagick->thumbnailImage(100, 0); header('Content-type: image/jpeg'); echo $imagick;
2024/03/11 追記:DLL が読み込めない場合
DLL のパスは正しいのに DLL が読み込めない現象が発生する場合があります。
php -v
コマンドを実行した際に下記のような Warning が出る場合は、
DLL が読み込めていません。
PHP Warning: PHP Startup: Unable to load dynamic library 'imagick' (tried: C:\xampp\php\ext\imagick (指定されたモジュールが見つかりません。), C:\xampp\php\ext\php_imagick.dll (指定されたモジュールが見つかりません。)) in Unknown on line 0 Warning: PHP Startup: Unable to load dynamic library 'imagick' (tried: C:\xampp\php\ext\imagick (指定されたモジュール が見つかりません。), C:\xampp\php\ext\php_imagick.dll (指定されたモジュールが見つかりません。)) in Unknown on line 0
これはおそらく Windows に Visual C++ 2019 の再頒布パッケージが含まれていないことが原因だと思われます。 この再頒布パッケージは、いろいろなアプリで使用されているので、 Windows を長期間使用していると知らず知らずのうちにインストールされていることが多いと思うのですが、 Windows をクリーンインストールしたりすると、この再頒布パッケージがインストールされていない状態になってしまい、エラーになってしまうようです。 例えば、Windows 11 をクリーンインストールした直後などに発生します。
ということで、Visual C++ 2019 の再頒布パッケージをインストールしましょう。 Visual C++ 2019 の再頒布パッケージは、現在は Visual C++ 2015 ~ 2022 までのまとまったパッケージとして配布されているので、それをインストールしましょう。
手動でインストールする
最新の再頒布パッケージは下記のページからダウンロードできます。
winget でインストールする
winget
コマンドを使うと簡単にインストールできます。
winget install --id Microsoft.VCRedist.2015+.x64