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

5voto

Rishi Ranjan Points 141

Vous pouvez utiliser ce qui suit pour vérifier votre mémoire libre (swap)

free -m

total used free shared buffers cached

Mem: 2048 357 1690 0 0 237
-/+ buffers/cache: 119 1928
Swap: 0 0 0

Pour activer le swap, vous pouvez utiliser par exemple :

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

4voto

Makita Points 1139

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

3voto

Aris Points 1407

J'ai augmenté le PHP memory_limit à partir de l'option par défaut 128M a 512M et redémarrez le serveur. Cela a résolu le problème.

3voto

Titogelo Points 63

Parfois, l'auto-actualisation du compositeur résout le problème.

php composer.phar self-update

Cheers

2voto

Bastin Robin Points 101

Je me retrouve dans cette situation la plupart du temps, donc normalement je suivais l'étape de mise en place de la mémoire d'échange.

Mais j'ai trouvé une autre astuce simple qui a fonctionné pour moi.

Exécuter composer update --no-dev Autres que composer update

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