Ich kann das einfach nicht lösen.
Ich bin auf dem Grundplan von Linode 1G RAM. Der Versuch, ein Paket über Composer zu installieren, lässt mich nicht zu. Mein Speicherlimit ist in PHP.ini auf "-1" gesetzt
Gibt es noch etwas, was ich tun kann, um das zu installieren?
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing thujohn/rss (dev-master df80a7d)
Downloading: 100%
PHP Fatal error: Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:975
Stack trace:
#0 [internal function]: Composer\Util\ErrorHandler::handle(2, 'proc_open(): fo...', 'phar:///usr/loc...', 975, Array)
#1 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(975): proc_open('stty -a | grep ...', Array, NULL, NULL, NULL, Array)
#2 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(853): Symfony\Component\Console\Application->getSttyColumns()
#3 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(818): Symfony\Component\Console\Application->getTerminalDimensions()
#4 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(752): Symfony\Component\Console\Application->getTerminalWidth()
#5 phar:///usr/local/bin/com in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php on line 975
Fatal error: Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:975
Stack trace:
#0 [internal function]: Composer\Util\ErrorHandler::handle(2, 'proc_open(): fo...', 'phar:///usr/loc...', 975, Array)
#1 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(975): proc_open('stty -a | grep ...', Array, NULL, NULL, NULL, Array)
#2 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(853): Symfony\Component\Console\Application->getSttyColumns()
#3 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(818): Symfony\Component\Console\Application->getTerminalDimensions()
#4 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(752): Symfony\Component\Console\Application->getTerminalWidth()
#5 phar:///usr/local/bin/com in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php on line 975
Ein bisschen alt, aber nur für den Fall, dass jemand nach einer Lösung sucht, kann das Problem durch ein Update Ihrer PHP -Version behoben werden.
Sie sollten auch Ihre composer.lock-Datei festlegen und eine Composer-Installation in einer Produktionsumgebung durchführen, die weniger Ressourcen erfordert.
Weitere Informationen finden Sie hier: https://github.com/composer/composer/issues/1898#issuecomment-23453850
Sieht aus, als hätten Sie keinen Swap-Speicher mehr
/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/sbin/swapon /var/swap.1
wie von @ BlackBurn027 in den Kommentaren erwähnt, wurde diese Lösung in hier beschrieben.
Ich habe das gleiche Problem gesehen. Ich bin auf einer AWS Free Microinstance, die weniger Speicher hat. Ich versuche immer eine der folgenden Optionen und es funktioniert immer (Bevor Sie dies überprüfen, prüfen Sie, ob Sie die neueste Version von Composer installiert haben.)
Sudo php -dmemory_limit=750M composer.phar update
oder entfernen Sie den Inhalt des Lieferantenordners und versuchen Sie das Composer-Update.
Sudo rm -rf vendor
Sudo php -dmemory_limit=750M composer.phar update --no-scripts --prefer-dist
Sudo php artisan --dump-autoload
Die zweite Option versucht, alle Komponenten zu aktualisieren. Wenn keine Aktualisierung erfolgt, wird das Paket aus dem Cache abgerufen, ansonsten aus dem dist
Hinweis: Bitte ändern Sie die Speicherbegrenzung nach Ihrer Wahl.
oder
Erstellen Sie eine Swap-Partition und versuchen Sie es. Swap-Partition ist der Teil der Festplatte, den Linux als virtuellen Speicher verwendet, wenn der physische Speicher ausgeht. Sie ähnelt nur der Windows-Auslagerungsdatei, anstatt eine tatsächliche Datei zu verwenden. Stattdessen verwendet Linux eine Partition auf der Festplatte.
Hoffe das hilft
Als Anleitung zur Fehlerbehebung für Komponisten hier Dies kann passieren, weil der VPS über genügend Arbeitsspeicher verfügt und kein Swap-Speicher aktiviert ist.
free -m
Um den Swap zu aktivieren, können Sie beispielsweise Folgendes verwenden:
Sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
Sudo /sbin/mkswap /var/swap.1
Sudo /sbin/swapon /var/swap.1
Einfach, geben Sie diese Befehle ein:
rm -rf vendor/
rm -rf composer.lock
php composer install --prefer-dist
Sollte für Maschinen mit wenig Arbeitsspeicher funktionieren
Ich hatte ein ähnliches Problem mit Vagrant. Ich habe es behoben, indem ich mehr Speicherplatz zugewiesen habe.
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
Versuch das:
/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/sbin/swapon /var/swap.1
Hier ist die Problemumgehung, die ich für jedes Mal gefunden habe:
df -h
dd if=/dev/zero of=/swapfile bs=1M count=1024
Sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
mkswap /swapfile
Sudo chmod 600 /swapfile
Sudo mkswap /swapfile
Sudo swapon /swapfile
echo 'echo "/swapfile none swap defaults 0 0" >> /etc/fstab' | Sudo sh
free -m
confirm u see your swap there:
total used free shared buffers cached
Mem: 494 335 158 0 19 62
-/+ buffers/cache: 254 240
Swap: 1023 3 1020
watch free -m
Dies scheint ein wiederkehrendes Problem bei 1 GB und kleineren Serverinstanzen zu sein. Neben dem Versuch, Prozesse und Tweak-Swap-Einstellungen herunterzufahren, konnten Sie die Installation auf einem lokalen Computer durchführen und hochladen.
Gehen Sie folgendermaßen vor, um das Problem zu beheben: (Instant-Methode für schnelle SWAP-Dateizuweisung)
Server-SWAP-Setup (Ubuntu 16.04 SWAP zur Behebung von Speicherfehlern)
Prüfen Sie, ob Sie bereits Swap, Speicher und Festplattengröße haben:
Sudo swapon -s
free -m
df -h
Auslagerungsdatei erstellen: (Ändern Sie 1G in 4G, wenn Sie 4 GB SWAP-Speicher benötigen)
Sudo fallocate -l 1G /swapfile
Überprüfen Sie die Auslagerungsdatei:
ls -lh /swapfile
Swap-Datei zuweisen:
Sudo chmod 600 /swapfile
Sudo mkswap /swapfile
Sudo swapon /swapfile
Überprüfen Sie, ob die Speicherkapazität und die Größe des Speichers korrekt sind:
Sudo swapon -s
free -m
df -h
Auslagerungsdatei beim Systemneustart anhängen:
Sudo nano /etc/fstab
/swapfile none swap sw 0 0
Passen Sie die Einstellungen für die Auslagerungsdatei an:
cat /proc/sys/vm/swappiness
cat /proc/sys/vm/vfs_cache_pressure
Sudo sysctl vm.swappiness=10
Sudo sysctl vm.vfs_cache_pressure=50
Sudo nano /etc/sysctl.conf
Priorität der SWAP-Datei: (0-100% => 0: Nicht tauschen, 100: SWAP verwenden und RAM freigeben)
vm.swappiness=10
Inode aus Cache entfernen: (100: System entfernt Inode-Informationen zu schnell aus dem Cache)
vm.vfs_cache_pressure = 50
Versuche dies:
/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/sbin/swapon /var/swap.1
Diese Arbeit für mich auf Centos 6
Manchmal löst sich der selbst aktualisierende Komponist das Problem
php composer.phar self-update
Prost
Ich komme meistens in diese Situation, also habe ich normalerweise den Schritt des Einrichtens des Swap-Speichers verfolgt.
Aber jetzt habe ich einen einfachen alternativen Trick gefunden, der für mich funktioniert hat.
Lauf composer update --no-dev
Anders als composer update
Ich habe das gleiche Problem in Vagrant gelöst. Ich habe den Wert von memory_limit Erhöht und den Composer-Cache gelöscht: Sudo rm -R ~/.composer
habe dasselbe Problem mit dem Update von php composer.phar auf meinem 512 MB Hosting.
gelöst mit php composer.phar install
Versuchen
Sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024 && Sudo /sbin/mkswap /var/swap.1 && Sudo /sbin/swapon /var/swap.1
Ich habe das PHP memory_limit von standardmäßig 128M auf 512M erhöht und den Server neu gestartet. Das hat das Problem gelöst.
Ich hatte ein ähnliches Problem auf dem billigsten Server (512 MB RAM), der mit DigitalOcean gehostet wurde, und ich führte auch Jenkins CI auf demselben Server aus. Nachdem ich die Jenkins-Instanz gestoppt hatte, funktionierte der Composer-Installationsbefehl (bis zu einem gewissen Punkt konnte die mcrypt-Erweiterung nicht installiert werden!).
Wenn Sie eine andere App auf dem Server ausführen, lohnt es sich möglicherweise, die Anwendung zu stoppen und den Befehl erneut auszuführen.
composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Aktualisieren Sie den Arbeitsspeicher auf dem Server und fordern Sie 4 GB RAM an.
2 Dateien Wir müssen bearbeiten
auf Befehl
# cd /var/www/html
# nano .htaccess
und "memory_limit 756M”
zu 4G
bearbeiten
PHP ini auf PHP 7.0
# cd ~
# php –-ini
# Sudo nano /etc/php-7.0.ini
memory_limit = 128M bis 4G
#AWS #AMAZONLINUX # MAGENTO2 # PHP7.0
Ich versuchte es, indem ich einfach den Herstellerordner und die Datei "composer.lock" löschte, und dann den Befehl "composer clear-cache" ausführen und dann den Composer installieren. So funktioniert es ohne Fehler.
Machen Sie einen Swap und führen Sie den Composer-Befehl erneut aus. Ich hoffe es klappt für dich.
$ dd if=/dev/zero of=/swapfile bs=1024 count=512k
$ mkswap /swapfile
$ swapon /swapfile
$ echo "/swapfile none swap sw 0 0 " >> /etc/fstab
$ echo 0 > /proc/sys/vm/swappiness
$ chown root:root /swapfile
$ chmod 0600 /swapfile
bearbeiten Sie die Datei php.ini und erhöhen Sie den memory_limit-Wert.
memory_limit = 1G
wird dieses Problem lösen.