web-dev-qa-db-de.com

Composer-Update-Speicherlimit

Ich muss Composer-Update bei meinem Hosting ausführen, also logge ich mich mit ssh ein und versuche, comand auszuführen:

composer update

in/www Ordner, wo ich Laravel und Komponist installiert habe

aber ich erhalte fehler:  enter image description here

in Kontakt mit meinem Hosting-Provider sagen sie mir, den Befehl auszuführen:

php -d memory_limit=512M composer update

Ich führe diesen Befehl aus, aber ich erhalte: "Datei konnte nicht geöffnet werden: Komponist" 

Was ist zu tun? Was ist die Lösung hier?

10
Andrew

Wenn Sie composer update ausführen, sucht das Betriebssystem in die konfigurierten Pfade und versucht, eine ausführbare Datei mit diesem Namen zu finden.

Bei der Ausführung von php composer update wird der String composer als Parameter für PHP behandelt, der in keinem Pfad gesucht wird. Sie müssen den vollständigen Pfad angeben, um ihn auszuführen.

Wenn Sie which composer ausführen, erfahren Sie, wo das Betriebssystem die ausführbare Composer-Datei findet, und dann verwenden Sie einfach den vollständigen Pfad im Befehl PHP:

$>which composer
/usr/local/bin/composer

$>php -d memory_limit=512M /usr/local/bin/composer update
...

Beachten Sie, dass 512 MB möglicherweise zu wenig sind. Meines Erachtens ist es erfreulicherweise 1 GB oder mehr, abhängig von der Anzahl der Abhängigkeiten, die Sie verwenden, und der Vielzahl der Versionen, die Sie theoretisch zulassen. Wenn Sie also Symfony ~2.3 zulassen, müssen Sie mit Composer im Vergleich zu vielen anderen möglichen Versionen umgehen mit ~2.7.

Beachten Sie auch, dass das Ausführen von Composer auf der Produktionsmaschine nicht die beste Idee ist. Sie müssten Zugriff auf Github haben, möglicherweise Anmeldeinformationen bereitstellen, VCS-Tools installiert haben, und Sie können Ihre Site leicht beschädigen, wenn einer der Remote-Hosting-Server während der Aktualisierung offline ist. Besser ist es, Composer auf einem Bereitstellungssystem zu verwenden, das die gesamte Vorbereitung durchführt und dann alle Dateien auf den Produktionsserver verschiebt.

28
Sven

Stellen Sie ein, dass so viel Speicher verwendet wird, wie es benötigt wird:

COMPOSER_MEMORY_LIMIT=-1 composer update
12
diamondsea

Ich habe Probleme mit dem Komponisten, weil er den gesamten verfügbaren Speicher verbraucht und der Prozess dann abgebrochen wird.

SO suchte ich nach einer Lösung, um die Speicherkapazität von Composer zu begrenzen.

Ich habe es versucht (von @Sven Antworten)

$ php -d memory_limit=512M /usr/local/bin/composer update

Aber es hat nicht funktioniert 

"Composer erhöht intern das memory_limit auf 1,5G."

-> Das ist vom Komponisten der Website.

Dann habe ich einen Befehl gefunden, der funktioniert: 

$ COMPOSER_MEMORY_LIMIT=512M php composer.phar update

Trotzdem ist 512 nicht genug!

Quelle: https://www.agileana.com/blog/composer-memory-limit-tr Troubleshooting/

1
Diego Favero

Sie können den memory_limit-Wert in Ihrer php.ini ändern

Erhöhen Sie den Grenzwert in Ihrer php.ini-Datei

Verwenden Sie -1 für unbegrenzt oder definieren Sie einen expliziten Wert wie 2G

memory_limit = -1

Hinweis: Composer erhöht intern das memory_limit auf 1,5 G.

Lesen Sie die Dokumentation getcomposer.org

1

Wenn genügend Speicher vorhanden ist, würde composer es intern verbrauchen und ohne Probleme ausgeführt werden. Sie müssen composer nicht speziell anweisen, dies zu tun.

Haben Sie versucht, Ihr Swap-Gedächtnis zu erhöhen, weil es für mich funktioniert hat? Ich habe den Swap-Speicher auf 4096 MB (4 GB) erhöht und jetzt sieht alles für mich großartig aus.

erste Benutzung "Sudo free ", um den verfügbaren Arbeitsspeicher anzuzeigen und den Arbeitsspeicher auszutauschen.

Für Debian:

Sudo fallocate -l 4G /swapfile
Sudo dd if=/dev/zero of=/swapfile bs=4096k count=1048
Sudo chmod 600 /swapfile
Sudo mkswap /swapfile
Sudo swapon /swapfile

um es dauerhaft zu machen, füge dies zu/etc/fstab hinzu, /swapfile swap swap defaults 0 0

Für CentOS:

[[email protected]]:/# cd /var
[[email protected]]:/var# touch swap.img
[[email protected]]:/var# chmod 600 swap.img
[[email protected]]:/var# mkswap /var/swap.img

[[email protected]]:/var# dd if=/dev/zero of=/var/swap.img bs=4096k count=1000
[[email protected]]:/var# mkswap /var/swap.img 
[[email protected]]:/var# swapon /var/swap.img

sie können den Swap-Speicher je nach Größe Ihres physischen Volumes um bs = 1024k oder 2048k oder 8096k erhöhen. Verwenden Sie die Befehle 'swapon' und 'swapoff', um den Unterschied zu erkennen.

check 'swappiness' (60 sollte gut tun,)

cat /proc/sys/vm/swappiness
1
Cosmo Arun

Wie groß ist Ihr AWS-Server? Wenn es nur 1 GB RAM hat, hilft es nicht, das Speicherlimit von 2 GB in der php.ini zu setzen.

Wenn Sie nicht auch die Serverseite vergrößern können/möchten, um mehr zu erhalten RAM verfügbar zu machen, können Sie auch SWAP aktivieren.

Siehe hier für wie man Swap aktiviert Es aktiviert 4 GB, obwohl ich normalerweise nur 1 GB selbst mache.

Quelle: Wurde von der Laracast-Site bezogen

0
Rem