web-dev-qa-db-de.com

PHP Fehler beim Composer-Update "Speicher kann nicht zugewiesen werden" (bei Verwendung von Laravel 4)

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
96
ericbae

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

54
fl3x7

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.

225

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

32
Abishek

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
14
Umair Hamid

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

11
insign

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
10
Yann叶

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
5
Ayo 'Lana

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
5
Goran

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.

4
Makita

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
3
Tarik

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

3
Adonias

Manchmal löst sich der selbst aktualisierende Komponist das Problem

php composer.phar self-update

Prost

3
Titogelo

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

2
Bastin Robin

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

2
oussaka

habe dasselbe Problem mit dem Update von php composer.phar auf meinem 512 MB Hosting.

gelöst mit php composer.phar install

1

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

1
jeidison farias

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.

0
Aris

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.

0
Chris
composer update

Loading composer repositories with package information
Updating dependencies (including require-dev)

> mmap () fehlgeschlagen: [12] Speicher kann nicht zugeordnet werden

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

0
SUNNETmedia

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.

0
Manjunath A

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
0
nixon1333

bearbeiten Sie die Datei php.ini und erhöhen Sie den memory_limit-Wert. 

memory_limit = 1G

wird dieses Problem lösen.

0
Amjith