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
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?
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.
Stellen Sie ein, dass so viel Speicher verwendet wird, wie es benötigt wird:
COMPOSER_MEMORY_LIMIT=-1 composer update
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/
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
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
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