Skip to content

ComposerがPHP 8.0.0を認識しない問題の解決方法

問題の概要

Composerのinstallまたはupdateコマンドを実行した際に、次のようなエラーが発生することがあります:

none
Problem 1
    - Root composer.json requires php ^7.3 but your php version (8.0.0) does not satisfy that requirement.

このエラーは一見すると矛盾しています。なぜなら、PHP 8.0.0は7.3よりも新しいバージョンであり、通常は下位互換性があるからです。しかしComposerは、プロジェクトのcomposer.jsonで指定されたPHPバージョン制約を厳密に検証します。

根本原因

このエラーの主な原因は、プロジェクトのcomposer.jsonファイルに以下のような記述があるためです:

json
"require": {
    "php": "^7.3",
    // 他の依存関係...
}

^7.3という表記は「7.3以上8.0未満」を意味します。つまり、PHP 8.0.0はこの条件を満たしていないため、Composerは互換性がないと判断します。

解決方法

方法1: composer.jsonのPHPバージョン制約を更新する

最も適切な解決策は、プロジェクトのcomposer.jsonファイルを編集してPHP 8.x系をサポートすることです:

json
"require": {
    "php": "^7.3|^8.0",
    // 他の依存関係...
}

変更後、以下のコマンドを実行します:

bash
composer update

TIP

この変更により、プロジェクトがPHP 7.3以上と8.0以上の両方で動作することを明示的に宣言できます。

方法2: プラットフォーム要件を無視する(一時的な解決策)

緊急時やテスト目的の場合、以下のコマンドでプラットフォームチェックをスキップできます:

bash
composer install --ignore-platform-reqs
bash
composer update --ignore-platform-reqs

注意

この方法は一時的な解決策であり、本番環境での使用は推奨されません。PHPのバージョン互換性の問題が隠蔽される可能性があります。

方法3: グローバルなComposer設定を確認する

システムで複数のPHPバージョンがインストールされている場合、Composerが異なるバージョンを認識している可能性があります:

bash
# 現在のPHPバージョンを確認
php -v

# Composerが認識しているPHPバージョンを確認
composer check-platform-reqs

互換性の問題に対処する

PHP 8.0では後方互換性のない変更がいくつか導入されているため、パッケージによってはまだ完全に互換性がない場合があります。エラーが継続する場合は、以下の点を確認してください:

  1. 使用しているすべてのパッケージがPHP 8.0に対応しているか確認
  2. 必要に応じてパッケージのバージョンを更新
  3. パッケージのGitHubリポジトリで既知の問題がないか調査

まとめ

ComposerのPHPバージョンエラーは、主にcomposer.jsonのバージョン制約指定が原因で発生します。恒久的な解決策としてはプロジェクトの要件を適切に更新し、一時的な対策として--ignore-platform-reqsオプションを使用できます。PHPのメジャーバージョンアップ時には、使用しているパッケージの互換性も必ず確認しましょう。