BETA

Windows10 + XAMPP 環境でImageMagickを使用する

投稿日:2020-03-18
最終更新:2020-03-18

この記事を試してみたくて、

compose.json

    "require": {  
        "spatie/pdf-to-image": "^2.0.0"  
    }  

と記述してcomposer installしたところ、以下のようなエラーメッセージが出力されました。

> composer install  

Loading composer repositories with package information  
Updating dependencies (including require-dev)  
Your requirements could not be resolved to an installable set of packages.  

  Problem 1  
    - Installation request for spatie/pdf-to-image ^2.0.0 -> satisfiable by spatie/pdf-to-image[2.0.0].  
    - spatie/pdf-to-image 2.0.0 requires ext-imagick * -> the requested PHP extension imagick is missing from your system.  

  To enable extensions, verify that they are enabled in your .ini files:  
    - PATH\TO\XAMPP\xampp\php\php.ini  
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.  

まあ、そうなるな……。

ImageMagickのダウンロード・配置

上述リンクから最新版と思しきImageMagick-7.0.7-11-vc15-x86.zipをダウンロード。

XAMPPは32bitなのでx86を選択。

ダウンロードして解凍したフォルダから、ImageMagick-7.0.7-11-vc15-x86\bin配下の.pdb以外のファイルを、PATH\TO\XAMPP\xampp\ImageMagick\bin\に配置(XAMPP直下にImageMagick、その下にbinフォルダをそれぞれ新規作成)。

imagickのダウンロード・配置

2番目に辿って行って最新版と思しきphp_imagick-3.4.4-7.4-ts-vc15-x86.zipをダウンロード。ちなみに

>php -i  
phpinfo()  
PHP Version => 7.4.3  

## 略  

ということで手元のXAMPPのPHPのバージョンは7.4系であることを確認済みでの判断です。

ダウンロードして解凍したフォルダから、以下の2つのコピーを行います

  1. ファイル名がCORE_RL_*.dllのものを上述の、PATH\TO\XAMPP\xampp\ImageMagick\bin\にコピー(上書き)
  2. php_imagick.dllPATH\TO\XAMPP\xampp\php\ext\にコピー

設定

php.iniで設定を記述。

;;;;;;;;;;;;;;;;;;;;;;  
; Dynamic Extensions ;  
;;;;;;;;;;;;;;;;;;;;;;  

; If you wish to have an extension loaded automatically, use the following  
; syntax:  
;  
;   extension=modulename  
;  
; For example:  
;  
;   extension=/path/to/extension/mysqli.so  
;  
; Note : The syntax used in previous PHP versions ('extension=<ext>.so' and  
; 'extension='php_<ext>.dll') is supported for legacy reasons and may be  
; deprecated in a future PHP major version. So, when it is possible, please  
; move to the new ('extension=<ext>) syntax.  

; 略  

;extension=pgsql  
;extension=shmop  
extension=imagick ;追記  

コメント部分に書いてありますが、please move to the new ('extension=<ext>) syntax.ということで、新しいPHPのバージョンだとphp_というプレフィックスは記述しなくて良い、とのことです。

最初、参考記事通りにextension=php_imagickと記述してphp -i | find "imagick"を実行したところ、

> php -i | find "imagick"  
PHP Warning:  PHP Startup: Failed to load ext\php_imagick, 謖~~~縺帙s縲  
 in Unknown on line 0  
Warning: PHP Startup: Failed to load ext\php_imagick, 指定されたファイルが見つかりません。  

と、エラーが出てしまいました。このエラー文についてはつい最近XAMPPのPHPのバージョンをアップグレードする ( 7.1.7 → 7.4.3 )で経験していたので、パスがおかしいということはすぐ気付けました。

次に、環境変数を追記。

PATH\TO\XAMPP\xampp\ImageMagick\bin

これでPCを再起動。

>php -i | find "imagick"  
imagick  
imagick module => enabled  
imagick module version => 3.4.4  
imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel  
imagick.locale_fix => 0 => 0  
imagick.progress_monitor => 0 => 0  
imagick.skip_version_check => 0 => 0  

OK、出ました。

これで、冒頭のcomposer installをもう一度試します。

> composer install  
Loading composer repositories with package information  
Updating dependencies (including require-dev)  
Package operations: 1 install, 0 updates, 0 removals  
  - Installing spatie/pdf-to-image (2.0.0): Downloading (100%)  
Writing lock file  
Generating autoload files  

完了しました!成功です。

参考

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

アルム=バンドのQrunch

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう