Composerで特定のphpのバージョンにあったパッケージをインストール

投稿者: | 2020年11月4日

composerを使ってパッケージをインストールしていたところ次のようなエラーが表示されました。

  Problem 1
    - facade/ignition-contracts 1.0.2 requires php ^7.3|^8.0 -> your PHP version (7.2.8) does not satisfy that requirement.
    - facade/ignition-contracts 1.0.2 requires php ^7.3|^8.0 -> your PHP version (7.2.8) does not satisfy that requirement.
    - Installation request for facade/ignition-contracts 1.0.2 -> satisfiable by facade/ignition-contracts[1.0.2].

これは動作環境のphpとパッケージが要求するphpのバージョンが一致していないためです。
普通はcomposerがphpのバージョンを自動的に認識してそれに動作するバージョンのパッケージをインストールしてくれるのですが、phpのバージョンダウンなんかをしたりするとこのようなことになります。

これを解消するためにはcomposer.jsonの中で動作環境のphpのバージョンを指定します。指定の仕方は次のようになります。

    "config": {
        "platform": {
            "php": "7.2.8"
        },

修正が終わりましたら、composer.lockを消して、composer install で完了です。
composer.lockにはインストールしたパッケージのバージョンが記録されており、このファイルを消さないとずっと同じバージョンがインストールされてしまいます。