web-dev-qa-db-fra.com

PHP Erreur de mise à jour du compositeur "impossible d'allouer de la mémoire" (avec Laravel 4)

Je ne peux tout simplement pas résoudre celui-ci.

Je suis sur le plan de base de Linode 1G RAM. Essayer d'installer un paquet via Composer sans me laisser faire. Ma limite de mémoire est définie sur "-1" sur PHP.ini

Y a-t-il autre chose que je puisse faire pour l'installer?

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

Un peu vieux, mais juste au cas où quelqu'un de nouveau cherche une solution, mettre à jour votre version de PHP peut résoudre le problème.

De plus, vous devriez valider votre fichier composer.lock et effectuer l’installation de composer sur un environnement de production nécessitant moins de ressources.

Plus de détails ici: https://github.com/composer/composer/issues/1898#issuecomment-23453850

54
fl3x7

On dirait que vous manquez de mémoire swap, Essayez ceci

/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/sbin/swapon /var/swap.1

comme mentionné par @ BlackBurn027 dans les commentaires ci-dessous, cette solution a été décrite dans ici

225

J'ai fait face au même problème. Je suis sur une micro-instance sans AWS qui a moins de mémoire. J'essaie toujours une des options ci-dessous et ça marche toujours (Avant tout, vérifiez si vous avez la dernière version de composer installée)

Sudo php -dmemory_limit=750M composer.phar update

ou supprimez le contenu du dossier du fournisseur et essayez de mettre à jour Composer.

Sudo rm -rf vendor
Sudo php -dmemory_limit=750M composer.phar update --no-scripts --prefer-dist
Sudo php artisan --dump-autoload

La deuxième option tente de mettre à jour tous les composants. S'il n'y a pas de mise à jour, il récupère le paquet dans le cache, sinon il récupère le

Note: S'il vous plaît changer la limite de mémoire selon votre choix.

ou 

Créez une partition swap et essayez. La partition d'échange est la partie du disque dur que Linux utilise comme mémoire virtuelle lorsqu'elle manque de mémoire physique. C'est similaire au fichier d'échange Windows uniquement au lieu d'utiliser un fichier réel, Linux utilise plutôt une partition sur le disque dur.

J'espère que cela t'aides

32
Abishek

En tant que guide de dépannage du compositeur ici .__, cela peut se produire car le VPS manque de mémoire et ne dispose pas d’espace de permutation.

free -m

Pour activer l'échange, vous pouvez utiliser par exemple:

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

Facile, tapez ces commandes:

rm -rf vendor/

rm -rf composer.lock

php composer install --prefer-dist

Devrait fonctionner pour des machines à faible mémoire

11
insign

J'ai eu le même problème sur vagrant. Je l'ai corrigé en allouant plus de mémoire.

 config.vm.provider :virtualbox do |vb|
      vb.customize ["modifyvm", :id, "--memory", "1024"]
 end
10
Yann叶

Essayez ça:

/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

Voici la solution de contournement que j'ai trouvée qui fonctionne pour moi à chaque fois:

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

Cela semble être un problème récurrent avec des instances de serveur de 1 Go ou moins. En plus d’essayer d’arrêter les processus et les paramètres d’échange Tweak, vous pouvez installer et télécharger sur une machine locale.

4
Makita

Voici les étapes à suivre pour résoudre le problème: (Méthode d’allocation de fichier SWAP rapide et instantanée utilisée)

Configuration du serveur SWAP (Ubuntu 16.04 SWAP pour corriger les erreurs de mémoire insuffisante)

Vérifiez si vous avez déjà permuté, la mémoire et la taille du disque:

    Sudo swapon -s
    free -m
    df -h

Créer un fichier d'échange: (changez 1G en 4G si vous voulez 4 Go de mémoire SWAP)

    Sudo fallocate -l 1G /swapfile 

Vérifier le fichier d'échange:

    ls -lh /swapfile

Assigner un fichier d'échange:

    Sudo chmod 600 /swapfile
    Sudo mkswap /swapfile
    Sudo swapon /swapfile

Vérifiez si swap OK, la mémoire et la taille du disque:

    Sudo swapon -s
    free -m
    df -h

Joindre un fichier d'échange au redémarrage du système:

    Sudo nano /etc/fstab
        /swapfile   none    swap    sw    0   0

Ajuster les paramètres du fichier d'échange: 

    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é du fichier SWAP: (0-100% => 0: ne pas permuter, 100: mettre sur SWAP et libérer de la mémoire vive)

        vm.swappiness=10

Supprimer l'inode du cache: (100: le système supprime trop rapidement les informations d'inode du cache)

        vm.vfs_cache_pressure = 50
3
Tarik

Essaye ça:

/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/sbin/swapon /var/swap.1

Ce travail pour moi sur Centos 6

3
Adonias

Parfois, en mettant à jour automatiquement le compositeur, cela résout le problème

php composer.phar self-update

À votre santé

3
Titogelo

Je me retrouve dans cette situation la plupart du temps, alors normalement, je suivais l’étape de la configuration de la mémoire de permutation.

Mais maintenant, j'ai trouvé un truc alternatif simple qui a fonctionné pour moi.

Courir composer update --no-dev autre que composer update

2
Bastin Robin

J'ai résolu le même problème dans Vagrant . J'ai augmenté la valeur de memory_limit Et supprimé le cache du composeur: Sudo rm -R ~/.composer

2
oussaka

j'ai le même problème avec php composer.phar update sur mon hébergement de 512mb.

résolu avec php composer.phar install

1
ivan.proskuryakov

Essayer

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

J'ai augmenté la limite de mémoire PHP de 128 Mo par défaut à 512 Mo et redémarré le serveur. Cela a résolu le problème.

0
Aris

J'ai eu un problème similaire sur le serveur le moins cher (512 Mo de RAM) hébergé avec DigitalOcean , et j'utilisais aussi Jenkins CI sur le même serveur. Après avoir arrêté l'instance de Jenkins, la commande composer composer a fonctionné (jusqu'à un certain point, elle a échoué, l'extension mcrypt étant manquante et déjà installée!).

Peut-être que si vous avez une autre application en cours d'exécution sur le serveur, cela vaut peut-être la peine d'essayer de l'arrêter et de relancer la commande.

0
Chris
composer update

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

> mmap () a échoué: [12] Impossible d'allouer de la mémoire.

Mettre à jour la mémoire sur le serveur et requérir la modification "4G" de 4 Go de RAM [essayez de modifier le type de serveur ou d'ajouter plus de RAM]

2 fichiers que nous devons éditer


sur commande

# cd /var/www/html
# nano .htaccess

et éditez "memory_limit 756M” en 4G


Php ini sur php 7.0

# cd ~
# php –-ini
# Sudo nano /etc/php-7.0.ini

memory_limit = 128M à 4G

#AWS #AMAZONLINUX # MAGENTO2 # PHP7.0

0
SUNNETmedia

J'ai essayé en supprimant simplement le dossier du vendeur et le fichier composer.lock, puis j'exécutais la commande "composer clear-cache", puis composeur install. Donc, cela fonctionne sans aucune erreur.

0
Manjunath A

Effectuez un échange et exécutez à nouveau la commande composer. J'espère que ça fonctionnera pour vous.

 $ 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

éditez le fichier php.ini et augmentez la valeur memory_limit. 

memory_limit = 1G

va résoudre ce problème.

0
Amjith