WindowsのPHPでImageMagick(iMagick)を使う

アフィリエイト広告を利用しています

このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です

Windows11開発環境の構築ガイド : PHP / WEBアプリ開発 編
今回はImageMagick(iMagick)をWindowsのPHPで扱う方法について解説していきます。

WindowsでPHPを扱うとき、だいたいのことは php.ini でいけます。
php.ini だけではダメなときもあります。
その1つがImageMagickです。
ということでセットアップしていきましょう。

本記事はWindows11ではなくWindows10を用いた説明になっています。
Windows10 も Windows11 も手順は同じですので「Windows10」の個所を「Windows11」と読みかえて進めてください。

また本記事は開発環境での用途を前提としています。
本番環境で利用される場合はここにある内容だけを鵜呑みにせず専門家に相談されることをお勧めします。

【宣伝】弊社では2000年台前半頃からPHPを扱っており古いシステムでも解析して直したり再活用を行うことができます。お使いのシステムに気になることがありましたらお気軽にお問い合わせください。

特徴

  • Windows 11 / Windows 10 対応
  • 複数バージョンの共存

環境

作業日2022-04-04
OSWindows 10 Pro 64bit

インストール対象のPHP

今回はこちらでインストールしたPHP8.0.17 を使っていきます。

php-8.0.17-Win32-vs16-x64
▲こちらです。

公式の手順

https://www.php.net/manual/ja/imagick.installation.php

こちらです。基本的に本ページの内容と同じです。

ダウンロード

公式サイトから取得

「公式から」ってことなんですが、ここでは「PHPの公式から」です。

ダウンロードページは▼です。
https://windows.php.net/downloads/pecl/deps/

いっぱい出てきますが、2022年4月4日時点では次のようになっています。
CTRL + F で「ImageMagick」で検索するとスグです。

PHPに合わせて「〇〇-vs16-x64」のやつを・・・と言いたいのですが、無いですね。
なので「〇〇-vc15-x64.zip」にします。

ちなみに、vs16 とか vc15 はコンパイルしたバージョンで、「x64」は64bit版、「x86」は32bit版です。

古いバージョンが欲しい

古いバージョンが欲しいときは一番上の「archives」にあります。

archivesに入って、CTRL + F で「ImageMagick」で検索してください。

インストール

場所はどこでもOKなので
フォルダを作って中身を解凍してコピー
です。

私の場合は下図のように、zip と同じ名前でフォルダを作ってその中にいれています。

6.9.3 はかなりだいぶ前に入れたものですが、このように複数バージョンを扱えるようにします。

ちなみに環境をDoropboxに作っておくと、バックアップになるしで便利です。
ちなみのちなみですが、Doropbox に入れるのはいわゆる本体だけで、データファイルやログファイルなどはDropboxの外のフォルダを指定しています。

コマンドから呼べるようにする

私はやりませんので、必要ない方は読み飛ばしてください。

  1. Windowsキー + X
  2. 上から4番目の「システム」
  3. 右の「関連設定」にある「システムの詳細設定」
  4. 環境変数
  5. システム環境変数
  6. Path をダブルクリック
  7. 「新規」
  8. 「〇〇〇〇\ImageMagick-7.1.0-18-vc15-x64\bin」
    ※ bin までのフルパスを入れる
  9. OK
  10. OK
  11. Windows の再起動
  12. Windowsキー + R
  13. cmd を入力しEnter

これでコマンドから使えるようになります。

PHPから使えるようにする

ここまででImageMagickを単体で使えるようになっただけです。
ここからはPHPで使えるようにしていきます。

PECL のダウンロード

こちらも公式から取得します。

ダウンロードページは▼こちらです。
https://windows.php.net/downloads/pecl/releases/imagick/

とりあえずは現時点で最新の 3.7.0rc1 をインストールすることにします。

【2022-12-29 訂正】上記ページから「3.7.0rc1」でなく「3.7.0」を開きます。

いろいろ出てくるのですが、選び方のポイントがあります。

ts / nts
Thread Safe か Non Thread Safe か?という意味です。
PHPをダウンロードするときに選択したと思いますが、同じほうを選びます。
例えば PHP 8.0.17 ならこちら です。

vc15 / vs16 / x64 / x86
これらも同じでPHPに合わせます。

ということで今回は ts-vs16-x64 を選択することになります。

php_imagick-3.7.0rc1-8.0-ts-vs16-x64.zip

php_imagick-3.7.0-【PHPバージョン】-ts-vs16-x64.zip

▲こちらのように目的のPHPバージョンにあったものをクリックします。

PHP8.1系(8.1.5、8.1.12で確認)には対応していないようです。
【2022-12-29 訂正】PHP8.1系の場合は「3.7.0rc1」でなく「3.7.0」のほうに入っています。
php_imagick-3.7.0-8.1-ts-vs16-x64.zip

▲をダウンロードします。

PECL のインストール

場所はどこでも良いのでインストール先にとしたい場所にフォルダを作って解凍します。

私の場合は、下図のように zip の名前でフォルダを作ってその中に解凍しています。

php_imagick.dll の配置

php_imagick.dll は、上記、解凍したフォルダの中にあります。

php_imagick.dll をPHPの ext の中に入れます。
▼のような感じです。

今回は php-8.0.17-Win32-vs16-x64 にだけ入れることにします。

他のPHPバージョンに入れることも出来ますが ts-vs16-x64 の部分が一致するものにしたほうが良いです。

php.ini に追記

php.ini の末尾に下記を加えます。

[ImageMagick]
extension=php_imagick.dll

httpd の conf に設定追加

上のほうで、環境変数に追加した場合は下記 Path を省略できます。
また MAGICK_CONFIGURE_PATH もシステムの環境変数に入れちゃうこともできます。
できますし、おそらくほとんどの説明で「環境変数に入れましょう」となっていることと思います。

でも、しません。

複数バージョンの同居をテーマにやっているのに、環境変数への設定が必要になると複数バージョンの同居はできなくなります。

ということで、ここで行うのは環境変数の設定です。

PATH
MAGICK_CONFIGURE_PATH

この2つが必要になります。

いきなり答えですが、次のように conf を設定します。

<VirtualHost *:443>
    DocumentRoot "〇〇〇〇/public_html"
    ServerName  〇〇〇〇.jp
    FcgidInitialEnv PATH E:\〇〇〇〇\ImageMagick-7.1.0-18-vc15-x64\bin
    FcgidInitialEnv MAGICK_CONFIGURE_PATH E:\〇〇〇〇\php_imagick-3.7.0rc1-8.0-ts-vs16-x64
    ~~~~ 途中省略 ~~~~
</VirtualHost>

VirtualHost の中に入れることで影響範囲を限定しています。

ちなみに環境変数を設定していない場合は、imagick を設定していないのと同じ状態になります。

FcgidInitialEnv は htaccessには書けません。

確認

ということで、APACHE を再起動して phpinfo() です。

Environment では、 PATH と MAGICK_CONFIGURE_PATH が確認できます。
これらが正しければ imagick が表示されます。

【宣伝】弊社では2000年台前半頃からPHPを扱っており古いシステムでも解析して直したり再活用を行うことができます。お使いのシステムに気になることがありましたらお気軽にお問い合わせください。