Résoudre les problèmes

Erreurs de limite de mémoire dans Composer et PHP

Vérifié le 3 min de lecture Composer mémoire

Si, en exécutant composer ou une tâche PHP, vous obtenez des erreurs comme :

  • Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors
  • PHP Fatal error: Allowed memory size of XXXXXX bytes exhausted

L'erreur fatale Allowed memory size ... exhausted confirme que ce processus a atteint memory_limit. Vérifiez d'abord la version, le PHP du terminal et la valeur effective :

composer --version
composer diagnose
php --ini
php -r 'echo ini_get("memory_limit"), PHP_EOL;'

Pour une exécution ponctuelle, augmentez de préférence la limite à une valeur finie compatible avec votre offre :

COMPOSER_MEMORY_LIMIT=2G composer install
php -d memory_limit=2G script.php

Le test ponctuel sans limite que documente Composer doit inclure la commande dans la même affectation :

COMPOSER_MEMORY_LIMIT=-1 composer install

Exécuter seulement COMPOSER_MEMORY_LIMIT=-1 sans export ne transmet pas la valeur au processus suivant. -1 supprime la limite du processus Composer, mais pas forcément celle des processus externes ; cela n'augmente pas la RAM et n'évite pas les limites PMEM ou NPROC de CloudLinux. Si Killed apparaît, s'il n'y a pas d'erreur fatale PHP ou si l'échec persiste, consultez Resource Usage et ses snapshots.

Avant de modifier de façon permanente Select PHP Version > Options > memory_limit, vérifiez avec php --ini que le PHP du terminal charge cette configuration. Gardez une valeur finie et compatible avec les ressources de votre offre.

Installer les dépendances prévues

Si le projet inclut composer.lock, composer install doit respecter ces versions. Ne le remplacez pas par composer update pour tenter de réduire la mémoire : cela résoudrait un autre ensemble de dépendances. Utilisez une version maintenue de Composer compatible avec le projet et vérifiez quel binaire PHP son lanceur exécute réellement.

Les exemples de variables sont pour un shell compatible Bash ou Zsh ; PowerShell et CMD utilisent une autre syntaxe. Composer peut exécuter les plugins et scripts du projet : faites donc le test sur un projet de confiance et évaluez son impact avant de relancer une installation en production. Consultez le guide officiel de Composer sur la mémoire.

Cela peut aussi vous aider

Quelque chose cloche ou a changé ? Racontez-nous et nous le vérifions.