Skip to content

Composer プラットフォームエラーの解決: PHPバージョン不一致

問題の概要

Composerを使用したPHPプロジェクト(特にLaravel)で、以下のようなエラーが発生することがあります:

Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 7.3.0".

このエラーは、システムにインストールされているPHPのバージョンと、プロジェクトが要求するPHPバージョンに不一致がある場合に発生します。AWS EC2インスタンスやローカル開発環境など、さまざまな環境でこの問題が報告されています。

注意

単に警告を無視するのではなく、根本的な解決を目指すことが重要です。無視すると、アプリケーションの動作に影響する可能性があります。

原因分析

このエラーが発生する主な理由は:

  1. 複数のPHPバージョンがインストールされていて、間違ったバージョンが使用されている
  2. Webサーバー(Apacheなど)とCLIで異なるPHPバージョンが使用されている
  3. Composerのキャッシュが古いバージョン情報を保持している
  4. グローバルComposerパッケージが異なるPHPバージョンでインストールされている

解決方法

方法1: 正しいPHPバージョンの確認と切り替え

まず、現在使用されているPHPバージョンを確認します。

bash
php -v
bash
# phpinfo()を使用するか、以下のコマンドで確認
php -i | grep "PHP Version"

WebサーバーとCLIで異なるバージョンが表示される場合は、以下の手順で修正します。

Apacheユーザー向け(Ubuntu)

bash
# 現在のPHPモジュールを無効化
sudo a2dismod php7.2

# 必要なPHPモジュールを有効化
sudo a2enmod php7.4

# Apacheを再起動
sudo service apache2 restart

cPanelユーザー向け

cPanelの「MultiPHP Manager」でドメインを選択し、右上のPHPバージョンを7.3以上に変更します。

方法2: 不要なPHPバージョンの削除

システムに複数のPHPバージョンがインストールされている場合、不要なバージョンを削除します。

bash
# 特定のPHPバージョンを削除
sudo apt remove php<version>

# 依存関係も削除
sudo apt autoremove

# 必要なPHPバージョンを再インストール
sudo apt install php<version>

方法3: Composer設定の調整(一時的な対策)

本質的解決ではないですが、一時的な対策としてComposerのプラットフォームチェックを無効化できます。

json
{
    "config": {
        "platform-check": false,
        "platform": {
            "php": "7.3.0"
        }
    }
}
bash
composer dump-autoload

警告

この方法はあくまで一時的な対策です。本番環境では推奨されません。

方法4: プラットフォーム要件を無視してインストール

緊急時のみ使用する方法:

bash
composer install --ignore-platform-reqs
# または
composer update --ignore-platform-reqs

方法5: パッケージの互換性バージョンを指定

特定のパッケージが高いPHPバージョンを要求している場合、互換性のあるバージョンを明示的に指定します。

bash
composer require <package>:<version>

環境別追加対策

Docker環境の場合

Dockerを使用している場合、./vendor/bin/sail open で正しく表示されることがあります。これはDockerコンテナ内のPHPバージョンが正しく設定されているためです。

Homebrewを使用するMacユーザー向け

bash
# PHPのインストール
brew install php

# PATHの設定
echo 'export PATH="/opt/homebrew/opt/php@8.1/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/opt/homebrew/opt/php@8.1/sbin:$PATH"' >> ~/.zshrc

XAMPPユーザー向け

XAMPPを複数回インストールしている場合、完全にアンインストールして再インストールすると解決することがあります。

根本的な解決のために

一時的な対策ではなく、以下の方法で根本的な解決を目指しましょう:

  1. プロジェクトに合ったPHPバージョンをインストール
  2. WebサーバーとCLIのPHPバージョンを一致させる
  3. 定期的にPHPバージョンを更新(現在はPHP 8.xが推奨)
  4. Composerの依存関係を定期的に見直す

ベストプラクティス

本番環境では、常にプロジェクトの要求するPHPバージョンと一致する環境を構築し、--ignore-platform-reqs オプションの使用は避けましょう。

まとめ

Composerのプラットフォームエラーは、PHPバージョンの不一致によって発生します。一時的な対策も可能ですが、根本的解決のために正しいPHPバージョンのインストールと設定を行うことが重要です。環境に応じた適切な解決方法を選択し、安定したアプリケーション運用を心がけましょう。