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
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
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
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
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
Facile, tapez ces commandes:
rm -rf vendor/
rm -rf composer.lock
php composer install --prefer-dist
Devrait fonctionner pour des machines à faible mémoire
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
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
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
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.
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
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
Parfois, en mettant à jour automatiquement le compositeur, cela résout le problème
php composer.phar self-update
À votre santé
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
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
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
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
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.
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.
composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
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
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.
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
éditez le fichier php.ini et augmentez la valeur memory_limit.
memory_limit = 1G
va résoudre ce problème.