Résoudre les problèmes
Erreurs de limite de mémoire dans Composer et PHP
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
- Composer installe un paquet global mais ne trouve pas sa commande Vérifiez que le binaire global de Composer existe, obtenez son répertoire réel et ajoutez-le au PATH...
- Activer la journalisation et l'affichage des erreurs PHP Enregistrez les erreurs PHP dans un fichier error_log ou affichez-les à l'écran pour trouver la caus...
- Activer le journal des erreurs PHP depuis le fichier .htaccess Configurez .htaccess pour enregistrer temporairement les erreurs PHP en dehors de public_html, sans...
- Activer temporairement le mode debug de PrestaShop Obtenez l'exception exacte en activant temporairement _PS_MODE_DEV_ depuis le back-office ou defines...
Quelque chose cloche ou a changé ? Racontez-nous et nous le vérifions.