192 votes

Erreur "cannot allocate memory" dans la mise à jour de PHP Composer (avec Laravel 4)

Je n'arrive pas à résoudre ce problème.

Je suis sur Linode 1G RAM plan de base. J'essaie d'installer un paquet via Composer et il ne me laisse pas faire. Ma limite de mémoire est fixée à "-1" dans PHP.ini.

Y a-t-il autre chose que je puisse faire pour que cela soit installé ?

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

0voto

J'ai eu le même problème en utilisant composer dans wsl2.

L'équipe WSL de Microsoft a introduit un fichier appelé .wslconfig pour ajuster les paramètres WSL2.

Vous devez essentiellement créer ce fichier à l'adresse %UserProfile%.wslconfig et définir les paramètres ci-dessous.

[wsl2]
memory=6GB  # Any size you feel like
swap=30GB
localhostForwarding=true

Redémarrez votre ordinateur, et à partir de maintenant, vous n'aurez plus de problème de consommation de mémoire élevée.

J'espère que ça aidera !

-1voto

Chris Points 6

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

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

-1voto

Amjith Points 412

Modifier le fichier php.ini et augmenter la valeur de memory_limit.

limite_mémoire=1G

résoudra ce problème.

-1voto

SUNNETmedia Points 331
composer update

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

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

Mettez à jour la mémoire du serveur et exigez '4G' Changez 4GB Ram [essayez de changer le type de serveur ou d'ajouter plus de RAM].

2 Fichiers que nous devons modifier


sur commande

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

et modifier "memory_limit 756M” a 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

-1voto

Toir427 Points 48

Je l'utilise pour 500 Mo de RAM et cela me convient.

php -d memory_limit=-1 /usr/local/bin/composer install

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X