首頁  >  問答  >  主體

重新寫的標題為:解決 Composer 錯誤:「您的 PHP 版本不符合要求」 - 參考升級 PHP

<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>
P粉162773626P粉162773626446 天前563

全部回覆(2)我來回復

  • P粉670838735

    P粉6708387352023-08-23 22:07:58

    如果你正在使用PHP版本8,一些尚未支援的外掛程式可能會導致安裝錯誤。

    composer install --ignore-platform-req=phpcomposer install --ignore-platform-reqs

    這個選項可以用來設定composer可以忽略的特定要求。

    回覆
    0
  • P粉289775043

    P粉2897750432023-08-23 09:22:20

    問題

    除了他們所需的其他軟體包的版本外,Composer軟體包還可以指定它們支援的PHP版本。

    在解析要安裝的軟體包的版本時,Composer必須找到與所有約束條件相符的版本:

    • 您在composer.json中為依賴項指定的版本約束條件
    • 每個軟體包為其依賴項指定的版本約束條件
    • 每個軟體包支援的PHP版本

    如果沒有滿足所有這些約束條件的軟體包,您將收到一個錯誤。

    常見的困惑

    請注意,PHP版本的版本約束條件遵循與其他Composer約束條件相同的規則。因此,^7.0的約束條件表示“7.0以上的任何7.x版本”,不包括8.0。

    解決方案

    要解決這個問題,您需要放寬其中一個限制條件:

    1. 查看錯誤訊息中提到的軟體包(例如範例中的acme/some-package)並在Packagist(或您配置的任何自訂軟體套件來源)上找到它。
    2. 查看是否存在支援您的PHP版本的新版本。
    3. 如果沒有,您需要找出需要新增該支援的內容。這可能意味著直接檢查項目、運行其測試並提交一個補丁來標記它與新版本相容。
    4. 如果(當)支援已添加,您需要確保您的composer.json和其他依賴的軟體包不排除該新版本。例如,如果您目前依賴acme/some-package的版本^1.0,但PHP 8.0僅從版本2.2.0開始支持,您需要將約束條件變更為^2.2,並確保您的應用程式仍然相容。

    暫時解決方法

    有時,您非常確定您的應用程式在使用與之前相同的軟體包版本時能夠正常運作。在這種情況下,您可以在composer.json中使用platform設定變數來假裝您仍在使用舊版本。 這只應作為臨時解決方法或用於測試,因為這意味著可能會安裝在您的新PHP版本上完全無法使用的軟體包。

    例如:

    {
        "config": {
            "platform": {
                 "php": "7.4.999"
            }
        }
    }
    

    另請參閱「在Composer中覆寫PHP基本相依性

    回覆
    0
  • 取消回覆