Titre réécrit : Résolution de l'erreur Composer : "Votre version de PHP ne répond pas aux exigences" - Référence de mise à niveau de PHP
P粉162773626
2023-08-22 23:14:44
<p>Après la mise à niveau de PHP 7.4 vers 8.0, j'ai exécuté <code>composer update</code> sur un projet existant et j'ai obtenu l'erreur suivante : </p>
<blockquote>
<ul>
<li>acme/some-package[1.0.0, ..., 1.4.0] nécessite php ^5.6.4 || ^7.0 -> Votre version de php (8.0.3) ne répond pas à cette exigence. ≪/li>
</ul>
</blockquote>
<p>Qu'est-ce que cela signifie et comment puis-je y remédier ? </p>
<p><em> (Il s'agit d'une réponse de référence destinée à couvrir un problème fréquemment rencontré. Le scénario n'est qu'un exemple. Voir aussi : "Comment interpréter les journaux d'erreurs de Composer ?") </em>< ;/ p>
Si vous utilisez PHP version 8, certains plugins qui ne sont pas encore supportés peuvent provoquer des erreurs d'installation.
composer install --ignore-platform-req=php
或者composer install --ignore-platform-reqs
Cette option peut être utilisée pour définir des exigences spécifiques que le compositeur peut ignorer.
Question
Les packages Composer peuvent spécifier les versions PHP qu'ils prennent en charge, en plus des versions des autres packages dont ils ont besoin.
Lors de l'analyse de la version d'un package à installer, Composer doit trouver une version qui correspond à toutes les contraintes :
composer.json
Si aucun package ne satisfait à toutes ces contraintes, vous recevrez une erreur.
Confusion commune
Notez que les contraintes de version de PHP suivent les mêmes règles que les autres contraintes de Composer. Par conséquent, la contrainte pour
^7.0
signifie « toute version 7.x supérieure à 7.0 », à l'exclusion de 8.0.Solution
Pour résoudre ce problème, vous devez relâcher l'une des contraintes :
acme/some-package
dans l'exemple) et trouvez-le sur Packagist (ou toute source de package personnalisé que vous avez configurée).composer.json
和其他依赖的软件包不排除该新版本。例如,如果您当前依赖于acme/some-package
的版本^1.0
,但PHP 8.0仅从版本2.2.0开始支持,您需要将约束条件更改为^2.2
et les autres packages dépendants n'excluent pas cette nouvelle version. Par exemple, si vous dépendez actuellement de la version^1.0
, mais que PHP 8.0 n'est pris en charge qu'à partir de la version 2.2.0, vous devrez modifier la contrainte en^2.2
et assurez-vous que votre application est toujours compatible.composer.json
中使用platform
Parfois, vous êtes presque sûr que votre application fonctionnera correctement en utilisant la même version du package qu'auparavant. Dans ce cas vous pouvez utiliser la configuration de laplateforme
dans Variable pour faites comme si vous utilisiez toujours l'ancienne version. Cela ne doit être utilisé que comme solution de contournement temporaire ou à des fins de test