Ich muss das Composer-Update auf meinem Hosting ausführen, damit ich mich mit ssh anmelde und versuche, comand auszuführen:
composer update
inside / www Ordner, in dem ich Laravel und Komponisten installiert habe
In Kontakt mit meinem Hosting-Anbieter fordern sie mich auf, den Befehl auszuführen:
php -d memory_limit=512M composer update
Ich führe diesen Befehl aus, erhalte aber Folgendes: "Datei konnte nicht geöffnet werden: Komponist"
Was ist zu tun? Was ist die Lösung hier?
php
laravel
ssh
composer-php
Andrew
quelle
quelle
composer install
genug. In Ihrem Fall, während Sie ein Shared Hosting verwenden, werden Sie wahrscheinlich nichtcomposer update
arbeiten. Der einzige Weg ist also, ein VPS-Hosting wie Digital Ocean, Linode zu kaufen.Antworten:
Wenn Sie ausführen
composer update
, überprüft das Betriebssystem die konfigurierten Pfade und versucht, eine ausführbare Datei mit diesem Namen zu finden.Während der Ausführung
php composer update
wird diecomposer
Zeichenfolge als Parameter für PHP behandelt, der in keinem Pfad durchsucht wird. Sie müssen den vollständigen Pfad angeben, um ihn ausführen zu können.Wenn Sie ausgeführt
which composer
werden, erfahren Sie, wo das Betriebssystem die ausführbare Composer-Datei findet, und verwenden dann einfach den vollständigen Pfad im PHP-Befehl:$>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. Ich gehe davon aus, dass 1 GB oder mehr benötigt werden, abhängig von der Anzahl der verwendeten Abhängigkeiten und der Vielzahl der Versionen, die Sie theoretisch zulassen. Wenn Sie also Symfony zulassen
~2.3
, lässt Composer im Vergleich zur Verwendung viel mehr mögliche Versionen verarbeiten~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 Zugriffsdaten angeben, VCS-Tools installiert haben und Ihre Site leicht beschädigen, wenn einer der Remote-Hosting-Server während Ihres Updates offline ist. Es ist besser, Composer auf einem Bereitstellungssystem zu verwenden, das die gesamte Vorbereitung durchführt und dann alle Dateien auf den Produktionsserver verschiebt.
Aktualisieren
Es ist jetzt das Jahr 2020 und die Art und Weise, wie Composer sein Gedächtnis verwaltet, hat sich ziemlich verändert. Das Wichtigste ist, dass Composer das Speicherlimit von selbst erhöht, wenn es auf ein zu niedriges Limit stößt. Dies löst jedoch sofort das Problem aus, dass auf Computern mit zu wenig installiertem Speicher nicht genügend Arbeitsspeicher vorhanden ist. Sie können Composer dazu bringen, weniger Speicher zu verwenden, indem Sie die Umgebungsvariable wie
COMPOSER_MEMORY_LIMIT=512M
festlegen. Dies führt jedoch zu Problemen, wenn Composer mehr Speicher benötigt, um ordnungsgemäß zu funktionieren.Mein Hauptpunkt bleibt wahr: Führen Sie Composer nicht auf Computern aus, auf denen zu wenig Speicher installiert ist. Sie benötigen möglicherweise 1,5 GB freien Speicher, um alles aktualisieren zu können.
quelle
php -d memory_limit=-1 $(which composer) update
Dies ist bequemer, da kein Composer-Pfad angegeben werden muss.php -d memory_limit=-1 $(which composer).phar update
Stellen Sie so ein, dass so viel Speicher verwendet wird, wie Sie möchten:
COMPOSER_MEMORY_LIMIT=-1 composer update
quelle
COMPOSER_MEMORY_LIMIT=-1; export COMPOSER_MEMORY_LIMIT
. Oder definieren Sie es als Shell-Alias?alias memcomposer='COMPOSER_MEMORY_LIMIT=-1 composer'
, dannmemcomposer
anstelle voncomposer
Fatal error: Allowed memory size of 2147483648 bytes exhausted (tried to allocate 4096 bytes) in phar://C:/ProgramData/ComposerSetup/bin/composer.phar/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52
Ich habe Probleme mit dem Komponisten, weil er den gesamten verfügbaren Speicher belegt und der Prozess dann abgebrochen wird (tatsächlich lautet die Ausgabemeldung "Killed").
Daher suchte ich nach einer Lösung, um die Speichernutzung des Komponisten zu begrenzen.
Ich habe es versucht (von @Sven Antworten)
$ php -d memory_limit=512M /usr/local/bin/composer update
Aber es hat nicht funktioniert, weil
-> Das ist von der offiziellen Website des Komponisten.
Dann habe ich einen Befehl gefunden, der funktioniert:
$ COMPOSER_MEMORY_LIMIT=512M php composer.phar update
Trotzdem, in meinem Fall sind 512 MB nicht genug!
Quelle: https://www.agileana.com/blog/composer-memory-limit-troubleshooter/
quelle
COMPOSER_MEMORY_LIMIT=-1 composer require <package name>
Ich musste kombinieren
COMPOSER_MEMORY_LIMIT
undmemory_limit
in der Kommandozeile:Unter Windows:
set COMPOSER_MEMORY_LIMIT=99999999999&& php -d memory_limit=-1 composer.phar update
Unter Linux:
export COMPOSER_MEMORY_LIMIT=99999999999 && php -d memory_limit=-1 composer.phar update
quelle
Wenn genügend Speicher vorhanden ist, würde Composer ihn intern verbrauchen und problemlos ausführen. Sie müssen den Komponisten nicht ausdrücklich dazu auffordern.
Haben Sie versucht, Ihr Swap-Gedächtnis zu vergrößern, weil es bei mir funktioniert hat? Ich habe den Swap-Speicher auf 4096 MB (4 GB) erhöht und jetzt sieht alles für mich großartig aus.
Verwenden Sie zuerst "
sudo free
", um den verfügbaren Speicher anzuzeigen und den Speicher auszutauschen. und konfigurieren Sie Swap als,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ügen Sie dies der Datei / etc / fstab hinzu.
/swapfile swap swap defaults 0 0
Für CentOS:
[root@myserver]:/# cd /var [root@myserver]:/var# touch swap.img [root@myserver]:/var# chmod 600 swap.img [root@myserver]:/var# mkswap /var/swap.img [root@myserver]:/var# dd if=/dev/zero of=/var/swap.img bs=4096k count=1000 [root@myserver]:/var# mkswap /var/swap.img [root@myserver]:/var# swapon /var/swap.img
Sie können Ihren Swap-Speicher erhöhen, indem Sie bs = 1024k oder 2048k oder 8096k ändern, abhängig von Ihrer physischen Volume-Größe. Verwenden Sie die Befehle 'swapon' und swapoff, um den Unterschied zu erkennen.
Überprüfen Sie 'Swappiness' (60 sollte gut tun,)
quelle
Sie können den
memory_limit
Wert in Ihrer php.ini ändernVersuchen Sie, das Limit in Ihrer php.ini-Datei zu erhöhen
Verwenden Sie -1 für unbegrenzt oder definieren Sie einen expliziten Wert wie 2G
memory_limit = -1
Lesen Sie die Dokumentation getcomposer.org
quelle
Auf MAC OS High Siera habe ich Folgendes ausgeführt:
Ist zurückgekommen:
Configuration File (php.ini) Path: /usr/local/etc/php/7.4 Loaded Configuration File: /usr/local/etc/php/7.4/php.ini Scan for additional .ini files in: /usr/local/etc/php/7.4/conf.d Additional .ini files parsed: /usr/local/etc/php/7.4/conf.d/ext- opcache.ini, /usr/local/etc/php/7.4/conf.d/php-memory-limits.ini
Alle obigen Antworten legen die geladene Konfiguration fest, die aktualisiert wird. Beachten Sie jedoch, dass zusätzliche analysierte INI-Dateien die Datei php-memory-limit.ini als separate Datei enthalten. Sie müssen auch dieses Dateispeicherlimit aktualisieren. Öffnen Sie den Text im Texteditor und wechseln Sie zu 2G. Die Ausgabe bei einem Fehler bei der Speicherbegrenzung sollte Ihnen mitteilen, wie viel Speicher ausgeführt werden muss. Setzen Sie ihn einfach auf "höher" oder "-1" für unbegrenzt.
quelle
Dieser Fehler kann insbesondere auftreten, wenn Sie große Bibliotheken oder Bibliotheken mit vielen Abhängigkeiten aktualisieren. Komponist kann ziemlich speicherhungrig sein.
Stellen Sie sicher, dass Ihr Komponist selbst auf die neueste Version aktualisiert ist:
php composer.phar --self-update
Sie können das Speicherlimit für Composer vorübergehend erhöhen, indem Sie die Umgebungsvariable für das Composer-Speicherlimit hinzufügen:
COMPOSER_MEMORY_LIMIT=128MB php composer.phar update
Verwenden Sie das Format "128M" für Megabyte oder "2G" für Gigabyte. Mit dem Wert „-1“ können Sie das Speicherlimit vollständig ignorieren.
Eine andere Möglichkeit wäre, das PHP-Speicherlimit zu erhöhen:
php -d memory_limit=512M composer.phar update ...
quelle
Die beste Lösung für mich ist
COMPOSER_MEMORY_LIMIT=-1 composer require <package-name>
erwähnt von @realtebo
quelle
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 festzulegen.
Wenn Sie die Serverseite nicht vergrößern können / wollen, um mehr RAM zur Verfügung zu haben, können Sie auch SWAP aktivieren.
Hier erfahren Sie, wie Sie den Swap aktivieren. Es ermöglicht 4 GB, obwohl ich normalerweise nur 1 GB selbst mache.
Quelle: Von Laracast Site erhalten
quelle
In meinem Fall hat keine der Antworten geholfen. Schließlich stellte sich heraus, dass der Wechsel zu einer 64-Bit-Version von PHP (M $ Windows) das Problem sofort behebt. Ich habe keine Einstellungen geändert - es hat einfach funktioniert.
quelle
Ich habe das auf Widnows 10 gemacht und mit mir gearbeitet:
php -d memory_limit=-1 C:/ProgramData/ComposerSetup/bin/composer.phar update
Sie können den gewünschten xx- Wert ändern
quelle
Ich verwende Laravel 6 mit Homestead und bin auch auf dieses Problem gestoßen. Wie hier in den anderen Antworten vorgeschlagen, können Sie
COMPOSER_MEMORY_LIMIT=-1
einem einzelnen Befehl ein Präfix voranstellen und den Befehl normal ausführen. Wenn Sie Ihre PHP-Konfiguration aktualisieren möchten, um immer unbegrenzten Speicherplatz zuzulassen, führen Sie die folgenden Schritte aus.vagrant up vagrant ssh php --version # 7.4 php --ini # Shows path to the php.ini file that's loaded cd /etc/php/7.4/cli # your PHP version. Each PHP version has a folder sudo vi php.ini
Fügen Sie
memory_limit=-1
Ihrer php.ini-Datei hinzu. Wenn Sie Probleme mit der Verwendung von Vim haben oder Änderungen an der Datei php.ini vornehmen, lesen Sie in dieser Antwort nach, wie Sie die Datei php.ini mit Vim bearbeiten. Die Datei sollte ungefähr so aussehen:; Maximum amount of memory a script may consume ; http://php.net/memory-limit memory_limit = -1
Beachten Sie, dass dies unendlich viel Speicher auf Ihrem Computer verbrauchen kann. Wahrscheinlich keine gute Idee für die Produktion lol. Mit Laravel musste Valet diesem Artikel folgen und den Speicherwert hier aktualisieren:
sudo vi /usr/local/etc/php/7.4/conf.d/php-memory-limits.ini
Starten Sie dann den Server mit Valet neu:
Diese Antwort war auch hilfreich, um die Konfiguration mit Laravel Valet auf dem Mac zu ändern, damit die Änderungen wirksam werden.
quelle
<C:\>set COMPOSER_MEMORY_LIMIT=-1 <C:\>composer install exhausted/packages
quelle
Für diejenigen, die Laravel Homestead verwenden
Schreiben Sie dies auf
Homestead.yaml
variables: - key: COMPOSER_MEMORY_LIMIT value: -1
quelle
php ini
Dateimemory_limit = -1
quelle
Für Laravel
Schritt 1. Öffnen Sie Ihr Terminal
Schritt 2.
cd
in Ihr Laravel-VerzeichnisSchritt 3.
which composer
Geben Sie den Befehl in Ihr Laravel-Verzeichnis ein und notieren Sie das Verzeichnis, in dem sich der Composer befindet.Schritt 4. Führen Sie den Befehl aus
php -d memory_limit=-1 /opt/cpanel/bin/composer update
(Sie können den Code auch ausführen, wenn er für Sie funktioniert).(Wechseln Sie
/opt/cpanel/bin/composer
in den in Schritt 3 zurückgegebenen Verzeichnispfad.)Problem gelöst
quelle
In meinem Fall waren höhere Berechtigungen zusammen mit dieser Erhöhung des Speicherlimits erforderlich.
sudo COMPOSER_MEMORY_LIMIT=2G php /opt/bitnami/php/bin/composer.phar update
quelle
sudo
ist keine gute Idee, da dadurch Ihre Berechtigungen verwechselt werden. Dies sieht so auscomposer update
, als würden Sie auf einem Server ausgeführt - dies ist auch eine schlechte Praxis, da es viel anders wird, die berechneten Abhängigkeiten unter Versionskontrolle zu stellen