環境
M1 Macbook Air
MAMP
Cakephpの環境構築過程でcomposer updateを実施したところ下記のエラーが発生。
$ composer update
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Root composer.json requires php <8.0 but your php version (8.0.13) does not satisfy that requirement.
Problem 2
- phpunit/phpunit[6.0.0, ..., 6.5.14] require php ^7.0 -> your php version (8.0.13) does not satisfy that requirement.
- Root composer.json requires phpunit/phpunit 6.* -> satisfiable by phpunit/phpunit[6.0.0, ..., 6.5.14].
composer.jsonで指定しているphpのバージョンの範囲が、私の環境にあるphpのバージョンの範囲外らしい。(こっちは8.0より低いバージョンが必要だけどあなたのphpのバージョンが8.0.13なので無理ですよ〜と言っている)
なので下記コマンドでphpのバージョンを確認してみたところ
$ php -v
PHP 7.4.21 (cli) (built: Oct 1 2021 11:18:30) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.21, Copyright (c), by Zend Technologies
あれ? 7.4.21だぞ? なんで8.0.13じゃないんだ?
ここで詰まりました。
解決法
compose.jsonのconfigに、下記のようにphpのバージョンを指定し、再度composer updateすることで解決しました。
"config": {
"minimum-stability": "dev",
"platform": {
"php": "7.4.21"
}
},
そもそもなぜバージョンのところでエラーが出たのかという話なのですが、私がphp -vで参照した7.4.21のphpは、元々macにインストールされていたphpのバージョンであったのに対し、composer.json側ではHomebrew側のphpを参照していたことが原因のようです。
余談
composer updateが完了した後、ふと思い立ち再度php -vをしたところ
$ php -v
PHP 8.0.13 (cli) (built: Nov 24 2021 11:11:54) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.13, Copyright (c) Zend Technologies
with Zend OPcache v8.0.13, Copyright (c), by Zend Technologies
上記のように変化していました。
あれ?いつ変わった。。?
Homebrew側のphpのPATHを追加して反映させたタイミング?
あれ?でもエラーの前には反映させていたような。。