web-dev-qa-db-fra.com

compositeur tué lors de la mise à jour

J'ai un problème, j'ai essayé d'installer un nouveau paquet dans mon projet laravel 4. .. Mais quand je lance php composer.phar update, je reçois ceci:

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

J'ai cherché le problème sur Internet et vu que la mémoire est le problème, je pense que je n'ai pas assez RAM de disponible, j'ai vérifié cela, j'ai environ 411mb libre . Est-ce que le compositeur est vraiment besoin de plus de RAM? Quelqu'un peut-il m'aider s'il vous plaît?

Merci

55
user3038158

Le message "Killed" signifie généralement que votre processus consomme trop de mémoire. Vous devrez donc peut-être simplement ajouter plus de mémoire à votre système, si possible. Au moment de la rédaction de cette réponse, j'ai dû augmenter la mémoire de ma machine virtuelle à au moins 768 Mo afin que composer update fonctionne dans certaines situations.

Toutefois, si vous le faites sur un serveur actif, vous ne devriez pas utiliser du tout composer update. Ce que vous devriez plutôt faire, c'est:

  1. Exécutez composer update dans un environnement local (votre machine physique locale ou une machine virtuelle de développement)
  2. Téléchargez ou git Push le fichier composer.lock
  3. Exécuter composer install sur le serveur live

composer install lira ensuite le fichier .lock en récupérant les mêmes versions exactes à chaque fois plutôt que de rechercher les dernières versions de chaque paquet. Cela rend votre application moins susceptible de tomber en panne et le compositeur utilise moins de mémoire.

Lisez plus ici: https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file

166
Andreas

Si, comme moi, vous utilisez un micro VM qui manque de mémoire, créer un fichier d'échange suffit:

free -m
mkdir -p /var/_swap_
cd /var/_swap_
#Here, 1M * 2000 ~= 2GB of swap memory
dd if=/dev/zero of=swapfile bs=1M count=2000
mkswap swapfile
swapon swapfile
chmod 600 swapfile
echo "/var/_swap_/swapfile none swap sw 0 0" >> /etc/fstab
#cat /proc/meminfo
free -m

au fait, n'hésitez pas à choisir un autre emplacement/nom de fichier/taille pour le fichier.
/var n’est probablement pas le meilleur endroit, mais je ne sais pas quel endroit serait, et cela m’arrive rarement, car de minuscules serveurs servent surtout à des fins de test.

34
Balmipour

C’est parce que votre hébergement manque de mémoire, veuillez vérifier this tutorial 

10
ivan.proskuryakov

Malheureusement, le compositeur nécessite beaucoup de RAM et de puissance de traitement. Voici quelques-unes des choses que j'ai faites et qui, combinées, ont rendu le processus supportable. C'était sur mon parc en nuage env.

  1. Vous pouvez simplement être à court de RAM. Activer le swap: https://www.digitalocean.com/community/search?query=how+to+add+swap (note: je pense que la meilleure pratique consiste à ajouter une partition séparée. Le guide de Digitalocean convient environnement)
  2. service mysql stop (tuez vos services DB/mem-hog pour libérer quelques RAM - n'oubliez pas de le redémarrer!) 
  3. utilisez une session de terminal secondaire exécutant top pour surveiller la consommation de mémoire/échange jusqu'à la fin du processus.
  4. composer.phar update --prefer-dist -vvv (sortie prolixe [se bloque toujours à certains moments lorsque vous travaillez] et utilisez les fichiers distro Zip). Peut-être aussi essayer un --dry-run
  5. Apparemment, Composer est connu pour fonctionner plus lentement dans les anciennes versions de PHP (par exemple, 5.3x). C'était encore lent en 5.5.9 pour moi ...
8
alirobe

Vous pouvez essayer quelque chose comme ça 

php -d memory_limit=4G /usr/local/bin/composer update
1
GiorgosK

Solution DigitalOcean ne nécessitant pas de mémoire supplémentaire - activation du swap, voici un exemple pour 1 Go:

dans le terminal en dessous

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

La solution ci-dessus fonctionnera jusqu'au prochain redémarrage, après quoi l'échange devra être réactivé. Pour le conserver entre les redémarrages, ajoutez le fichier d'échange à fstab:

Sudo nano /etc/fstab

ouvrez le fichier ci-dessus add ajoutez la ligne ci-dessous au fichier

/var/swap.1 swap swap sw 0 0

maintenant redémarrez le serveur. Composer besoin fonctionne bien.

1
Hemamalini

Vous pouvez essayer de définir preferred-install sur "dist" dans la configuration du compositeur de la CLI WP - généralement à ~/.wp-cli/packages/composer.json.

0
XedinUnknown

php -d memory_limit = Mise à jour du compositeur 5G

0
Ali Özyıldırım

Résolu sur Laravel/Homestead (Fenêtres vagabondes)

1) Éditez Homestead.yaml et augmentez la mémoire de 2048 à 4096

2) vagabond

3) ssh vagrant

4) Installez Symfony avec cette ligne sur le dossier que vous choisissez (doit être sans fichiers)

COMPOSER_MEMORY_LIMIT=-1 composer create-project symfony/website-skeleton . -s dev
0
davidjimenez75

Exécutez composer self-update et composer clearcache supprimez le fournisseur et le composeur.lock, redémarrez votre environnement local, puis exécutez php -d memory_limit=-1 /usr/local/bin/composer install.

0
farnoosh