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インスタンスやローカル開発環境など、さまざまな環境でこの問題が報告されています。
注意
単に警告を無視するのではなく、根本的な解決を目指すことが重要です。無視すると、アプリケーションの動作に影響する可能性があります。
原因分析
このエラーが発生する主な理由は:
- 複数のPHPバージョンがインストールされていて、間違ったバージョンが使用されている
- Webサーバー(Apacheなど)とCLIで異なるPHPバージョンが使用されている
- Composerのキャッシュが古いバージョン情報を保持している
- グローバルComposerパッケージが異なるPHPバージョンでインストールされている
解決方法
方法1: 正しいPHPバージョンの確認と切り替え
まず、現在使用されているPHPバージョンを確認します。
php -v
# phpinfo()を使用するか、以下のコマンドで確認
php -i | grep "PHP Version"
WebサーバーとCLIで異なるバージョンが表示される場合は、以下の手順で修正します。
Apacheユーザー向け(Ubuntu)
# 現在の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バージョンがインストールされている場合、不要なバージョンを削除します。
# 特定のPHPバージョンを削除
sudo apt remove php<version>
# 依存関係も削除
sudo apt autoremove
# 必要なPHPバージョンを再インストール
sudo apt install php<version>
方法3: Composer設定の調整(一時的な対策)
本質的解決ではないですが、一時的な対策としてComposerのプラットフォームチェックを無効化できます。
{
"config": {
"platform-check": false,
"platform": {
"php": "7.3.0"
}
}
}
composer dump-autoload
警告
この方法はあくまで一時的な対策です。本番環境では推奨されません。
方法4: プラットフォーム要件を無視してインストール
緊急時のみ使用する方法:
composer install --ignore-platform-reqs
# または
composer update --ignore-platform-reqs
方法5: パッケージの互換性バージョンを指定
特定のパッケージが高いPHPバージョンを要求している場合、互換性のあるバージョンを明示的に指定します。
composer require <package>:<version>
環境別追加対策
Docker環境の場合
Dockerを使用している場合、./vendor/bin/sail open
で正しく表示されることがあります。これはDockerコンテナ内のPHPバージョンが正しく設定されているためです。
Homebrewを使用するMacユーザー向け
# 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を複数回インストールしている場合、完全にアンインストールして再インストールすると解決することがあります。
根本的な解決のために
一時的な対策ではなく、以下の方法で根本的な解決を目指しましょう:
- プロジェクトに合ったPHPバージョンをインストール
- WebサーバーとCLIのPHPバージョンを一致させる
- 定期的にPHPバージョンを更新(現在はPHP 8.xが推奨)
- Composerの依存関係を定期的に見直す
ベストプラクティス
本番環境では、常にプロジェクトの要求するPHPバージョンと一致する環境を構築し、--ignore-platform-reqs
オプションの使用は避けましょう。
まとめ
Composerのプラットフォームエラーは、PHPバージョンの不一致によって発生します。一時的な対策も可能ですが、根本的解決のために正しいPHPバージョンのインストールと設定を行うことが重要です。環境に応じた適切な解決方法を選択し、安定したアプリケーション運用を心がけましょう。