Composer といえば、PHPのパッケージ管理と依存関係の解消を行ってくれる便利ツールだけど、Windows 環境で使っていて思わぬエラーを踏んだのでメモを残しておく。
まず、Composer のインストールについて、経験則上は、インストール時点でPHPの実行環境が存在していることが多いので、php 越しに composer-setup.phpを実行したり、composer.pharをダウンロードしてきてパスを通す、といったことが多いように思う。
しかし、実はWindows環境向けには公式のインストーラーが存在している。
https://getcomposer.org/doc/00-intro.md#installation-windows
こちらからインストールすると composer がインストールされる&パスが通った状態となり、コマンドプロンプトなどから利用できる。のはずだったが、composerを実行すると下記のようなエラーとなった。
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for league/flysystem 1.0.57 -> satisfiable by league/flysystem[1.0.57].
- league/flysystem 1.0.57 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
Problem 2
- league/flysystem 1.0.57 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
- league/flysystem-aws-s3-v3 1.0.23 requires league/flysystem ^1.0.40 -> satisfiable by league/flysystem[1.0.57].
- Installation request for league/flysystem-aws-s3-v3 1.0.23 -> satisfiable by league/flysystem-aws-s3-v3[1.0.23].
To enable extensions, verify that they are enabled in your .ini files:
- C:\php\php.ini
You can also run php --ini
inside terminal to see which files are used by PHP in CLI mode.
エラーメッセージにあるように、composerが必要としているPHPの拡張機能が無効となっているからで php.ini を編集し、
;extension=fileinfo
の先頭のセミコロンを削除(コメントアウトを解除)して
extension=fileinfo
とすることでエラーが解消された。