🐘
composer install する際の PHP バージョンを指定する
概要
Composer が提供している Docker イメージ を使用する場合など composer を実行する環境(例えば PHP 8.1)と実際に動かす環境(例えば PHP 7.4)の PHP バージョンが異なるケースでそのままだと composer install
でライブラリのインストールができないことがあります。
そういった場合は ドキュメント にあるように composer.json の platform で PHP バージョンを指定することができます。
composer.json
composer.json を直接編集することもできますがコマンドを使うと確実です。
php composer.phar config platform.php 7.4.27
composer.json に config が追加されます。
composer.json
{
"config": {
"platform": {
"php": "7.4.27"
}
}
}
composer.lock
composer install は composer.lock をベースに実行されるので composer.lock に反映する必要があります。
composer update
でライブラリを含め全体をアップデートしても良いのですが config だけを反映したい場合は引数で指定します。
php composer.phar update platform.php
content-hash
が変更され platform-overrides
と plugin-api-version
が追加されます。
composer.lock
{
"content-hash": "e2df4b33e353da716f5f60fe148820a2",
"platform": [],
"platform-dev": [],
"platform-overrides": {
"php": "7.4.27"
},
"plugin-api-version": "2.2.0"
}
composer install
変更された composer.lock を基にライブラリをインストールします。
php composer.phar install
composer check-platform-reqs
ただしドキュメントの注意書きにあるように PHP のバージョンを指定した場合は依存関係が正しくチェックされないのでどこかで check-platform-reqs を実行しておく方が安全です。[1]
PHP 7.4.27 環境で
php composer.phar check-platform-reqs
-
そもそもバージョンが異なる環境で composer を実行しない方がいいのかもしれませんが… ↩︎
Discussion