<p>PHP を 7.4 から 8.0 にアップグレードした後、既存のプロジェクトで <code>composer update</code> を実行すると、次のエラーが発生しました: </p>
<ブロック引用>
<li>acme/some-package[1.0.0, ..., 1.4.0] には php ^5.6.4 || ^7.0 -> が必要です。お使いの php バージョン (8.0.3) はこの要件を満たしていません。 </li>
</ul>
</blockquote>
<p>これは何を意味しますか?どうすれば修正できますか? </p>
<p><em> (これは、頻繁に発生する問題をカバーすることを目的とした参照回答です。シナリオは単なる例です。「Composer のエラー ログを解釈する方法」も参照してください) </em>< ;/ p>
PHP バージョン 8 を使用している場合、まだサポートされていない一部のプラグインによりインストール エラーが発生する可能性があります。
composer install --ignore-platform-req=php
またはcomposer install --ignore-platform-reqs
このオプションは、composer が無視できる特定の要件を設定するために使用できます。
###質問###
Composer パッケージでは、必要な他のパッケージのバージョンに加えて、サポートする PHP バージョンも指定できます。
インストールするパッケージのバージョンを解析するとき、Composer はすべての制約に一致するバージョンを見つける必要があります:
composer.json-
- 各パッケージでサポートされている PHP バージョン
-
これらの制約をすべて満たすパッケージがない場合は、エラーが発生します。
で依存関係に対して指定するバージョン制約
各パッケージによってその依存関係に対して指定されるバージョン制約よくある混乱
PHP バージョンのバージョン制約は、
他の Composer 制約と同じルールに従うことに注意してください。したがって、制約 #^7.0は、8.0 を除く、「7.0 より上の任意の 7.x バージョン」を意味します。 ###解決### この問題を解決するには、制約の 1 つを緩和する必要があります:
エラー メッセージに記載されているパッケージ (例: 例のacme/some-package
) を確認し、Packagist
(または構成したカスタム パッケージ ソース) にインストールします。それをオンにします。^2.2
に変更し、アプリケーションに互換性があることを確認してください。一時的な解決策
以前と同じパッケージ バージョンを使用すると、アプリケーションが正しく実行されると確信できる場合があります。この場合、
composer.jsonplatform
configuration variablesを使用して、古いバージョンをまだ使用しているように見せることができます。
これは、新しい PHP バージョンではまったく機能しないパッケージがインストールされる可能性があることを意味するため、一時的な回避策またはテスト
としてのみ使用してください。 ###例えば:### リーリー「
Composer での PHP ベースの依存関係のオーバーライド 」も参照してください