重新寫的標題為:解決 Composer 錯誤:「您的 PHP 版本不符合要求」 - 參考升級 PHP
P粉162773626
2023-08-22 23:14:44
<p>在將PHP從7.4升級到8.0之後,我在現有的專案上運行了<code>composer update</code>,然後出現了以下錯誤:</p>
<blockquote>
<ul>
<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版本的版本約束條件遵循與其他Composer約束條件相同的規則。因此,
^7.0
的約束條件表示“7.0以上的任何7.x版本”,不包括8.0。解決方案
要解決這個問題,您需要放寬其中一個限制條件:
acme/some-package
)並在Packagist(或您配置的任何自訂軟體套件來源)上找到它。composer.json
和其他依賴的軟體包不排除該新版本。例如,如果您目前依賴acme/some-package
的版本^1.0
,但PHP 8.0僅從版本2.2.0開始支持,您需要將約束條件變更為^2.2
,並確保您的應用程式仍然相容。暫時解決方法
有時,您非常確定您的應用程式在使用與之前相同的軟體包版本時能夠正常運作。在這種情況下,您可以在
composer.json
中使用platform
設定變數來假裝您仍在使用舊版本。 這只應作為臨時解決方法或用於測試,因為這意味著可能會安裝在您的新PHP版本上完全無法使用的軟體包。例如:
另請參閱「在Composer中覆寫PHP基本相依性」