この記事を試してみたくて、
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のダウンロード・配置
- windows.php.net – /downloads/pecl/releases/imagick/
- windows.php.net – /downloads/pecl/releases/imagick/3.4.4/
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つのコピーを行います
- ファイル名が
CORE_RL_*.dll
のものを上述の、PATH\TO\XAMPP\xampp\ImageMagick\bin\
にコピー(上書き) php_imagick.dll
をPATH\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
完了しました!成功です。