Fehlerbehebung

Speicherlimit-Fehler in Composer und PHP

Geprüft am 3 Min. Lesezeit Composer Arbeitsspeicher

Wenn Sie beim Ausführen von composer oder einer PHP-Aufgabe Fehler wie diese erhalten:

  • 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

Der fatale Fehler Allowed memory size ... exhausted bestätigt, dass dieser Prozess memory_limit erreicht hat. Prüfen Sie zuerst die Version, das PHP des Terminals und den tatsächlich geltenden Wert:

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

Erhöhen Sie das Limit für eine einzelne Ausführung vorzugsweise auf einen endlichen Wert, der zu Ihrem Tarif passt:

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

Der von Composer dokumentierte einmalige Test ohne Limit muss den Befehl in derselben Zuweisung enthalten:

COMPOSER_MEMORY_LIMIT=-1 composer install

Wenn Sie nur COMPOSER_MEMORY_LIMIT=-1 ohne export ausführen, wird der Wert nicht an den nachfolgenden Prozess weitergegeben. -1 hebt das Limit des Composer-Prozesses auf, aber nicht unbedingt das externer Prozesse; es erhöht weder den RAM noch umgeht es die CloudLinux-Limits PMEM oder NPROC. Wenn Killed erscheint, kein fataler PHP-Fehler auftritt oder der Fehler bestehen bleibt, prüfen Sie Resource Usage und die zugehörigen Snapshots.

Bevor Sie Select PHP Version > Options > memory_limit dauerhaft ändern, bestätigen Sie mit php --ini, dass das PHP des Terminals diese Konfiguration lädt. Behalten Sie einen endlichen Wert bei, der zu den Ressourcen Ihres Tarifs passt.

Die vorgesehenen Abhängigkeiten installieren

Wenn das Projekt eine composer.lock enthält, muss composer install diese Versionen einhalten. Ersetzen Sie es nicht durch composer update, um Speicher zu sparen: Das würde einen anderen Satz Abhängigkeiten auflösen. Verwenden Sie eine gepflegte Composer-Version, die mit dem Projekt kompatibel ist, und prüfen Sie, welches PHP-Binary sein Starter tatsächlich ausführt.

Die Beispiele für Variablen gelten für eine Bash- oder Zsh-kompatible Shell; PowerShell und CMD verwenden eine andere Syntax. Composer kann Plugins und Skripte des Projekts ausführen. Testen Sie deshalb in einem vertrauenswürdigen Projekt und prüfen Sie die Auswirkungen, bevor Sie eine Installation in der Produktion wiederholen. Siehe den offiziellen Composer-Leitfaden zum Speicher.

Das könnte Ihnen auch helfen

Stimmt etwas nicht oder hat sich etwas geändert? Erzählen Sie es uns, und wir prüfen es.