Contao Composer

In der letzten Zeit erhielt ich immer öfter eine Fatal error Meldung beim Aktualisieren von Erweiterungspaketen über den Composer.
Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 134217728 bytes) in [...] composer/composer.phar/src/Composer/DependencyResolver/Solver.php on line 220

Demnach steht dem Skript zur Installation anscheinende zu wenig RAM Speicher zur Verfügung.
Abhilfe schafft ein Eintrag in die .htaccess die da z.B. lautet
php_value memory_limit 1024M oder, wenn das auch nicht geht: php_value memory_limit 2048M

Danke an das Team von all-inkl für den Support, auf dessen Server das wunderbar geklappt hat.

Ist nur so: Wenn man einen solchen Eintrag in die htaccess macht, sollte man wissen, dass das rekursiv für alle Skripte unterhalb des Verzeichnisses, in der die htaccess liegt, auch gilt. Das heißt, dass alles Skripte unterhalb der .htaccess dürfen bis 2 GB RAM in Anspruch nehmen. Das ist eine Menge Holz, wenn man bedenkt, dass manche Server mit mehreren Kunden nur 4 oder 8 GB insgesamt zur Verfügung haben. Es wäre deshalb ratsam den Eintrag nach der Aktualisierung des Paketes wieder zu entfernen.

Etwas klüger kann es daher sein, wenn man nur dem Installationsskript vom Composer die Erlaubnis gibt, mehr RAM in Anspruch zu nehmen. Die kann man z.B. durch
ini_set(„memory_limit“,-1); erreichen. Hab ich aber selber noch nicht ausprobiert und weiß derzeit auch nicht, in welche Datei man das schreiben müsste.
Deshalb hier nur als Randnotiz vermerkt.

Und noch besser ist es natürlich, wenn der Server Haus aus mehr RAM-Speicher hat.

Und ganz klasse wäre es, wenn die Installation von Erweiterungen üner den Composer so problemlos funktionieren würde wie im alten ER ;-)I

Kommentare (2)

  1. Hallo Jutta,

    oder Du änderst die Composer-Einstellungen in Contao auf
    Ausführungsmodus: als eigentständiger Prozess und
    bei PHP-Pfad/Befehl erhöhst Du das Memorylimit auf einen Wert größer 1G, dann wird diese Speichererhöhung nur für den Composer verwendet und nicht für andere Skripte… ;-) Funktioniert auch einwandfrei bei All-Inkl.

    Viele Grüße.

    Joachim

  2. Eine weitere Möglichkeit wäre (falls Shell Zugang zur Verfügung gestellt wird), dass das Memory Limit direkt über die Konsole (nur für diesen Aufruf) eingestellt werden kann.

    php -d memory_limit=-1 composer.phar install/update

Kommentare sind geschlossen.