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
P粉162773626 2023-08-22 23:14:44
0
2
569
<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>
P粉162773626
P粉162773626

répondre à tous(2)
P粉670838735

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.

P粉289775043

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 :

  • Les contraintes de version que vous spécifiez pour les dépendances dans composer.json
  • Contraintes de version spécifiées par chaque package pour ses dépendances
  • Versions PHP prises en charge pour chaque package

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 :

  1. Regardez le package mentionné dans le message d'erreur (comme acme/some-package dans l'exemple) et trouvez-le sur Packagist (ou toute source de package personnalisé que vous avez configurée).
  2. Vérifiez s'il existe une nouvelle version prenant en charge votre version PHP.
  3. Sinon, vous devez découvrir ce qui doit être ajouté pour soutenir cela. Cela peut impliquer de vérifier directement le projet, d'exécuter ses tests et de soumettre un correctif pour le marquer comme compatible avec la nouvelle version.
  4. Si (quand) le support est ajouté, vous devez vous assurer que votre 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
  5. de ^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.

Solution temporaire

composer.json中使用platformParfois, 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 la plateforme 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

car cela signifie que vous pouvez installer des packages qui ne fonctionneront pas du tout sur votre nouvelle version de PHP.

Par exemple :

{
    "config": {
        "platform": {
             "php": "7.4.999"
        }
    }
}
Voir aussi « Surcharge des dépendances de base PHP dans Composer » 🎜
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal