Composer killed while updating

PhpLaravelLaravel 4Composer Php

Php Problem Overview


I got a problem, I tried to install a new package to my Laravel 4 project. But when I run php composer.phar update I get this:

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

I have looked for the problem in the Internet and saw that the memory is the problem, I think I don't have enough RAM available, I've checked this I have about 411mb free. Does composer really need more RAM?

Php Solutions


Solution 1 - Php

The "Killed" message usually means your process consumed too much memory, so you may simply need to add more memory to your system if possible. At the time of writing this answer, I've had to increase my virtual machine's memory to at least 768MB in order to get composer update to work in some situations.

However, if you're doing this on a live server, you shouldn't be using composer update at all. What you should instead do is:

  1. Run composer update in a local environment (such as directly on your physical laptop/desktop, or a docker container/VM running on your laptop/desktop) where memory limitations shouldn't be as severe.
  2. Upload or git push the composer.lock file.
  3. Run composer install on the live server.

composer install will then read from the .lock file, fetching the exact same versions every time rather than finding the latest versions of every package. This makes your app less likely to break, and composer uses less memory.

Read more here: https://getcomposer.org/doc/01-basic-usage.md#installing-with-composer-lock

Alternatively, you can upload the entire vendor directory to the server, bypassing the need to run composer install at all, but then you should run composer dump-autoload --optimize.

Solution 2 - Php

If like me, you are using some micro VM lacking of memory, creating a swap file does the trick:

#Check free memory before
free -m

mkdir -p /var/_swap_
cd /var/_swap_

#Here, 2G ~ 2GB of swap memory. Feel free to add MORE
sudo fallocate -l 2G swapfile

chmod 600 swapfile
mkswap swapfile
swapon swapfile
#Automatically mount this swap partition at startup
echo "/var/_swap_/swapfile none swap sw 0 0" >> /etc/fstab

#Check free memory after
free -m

As several comments pointed out, don't forget to add sudo if you don't work as root.

btw, feel free to select another location/filename/size for the file.
/var is probably not the best place, but I don't know which place would be, and rarely care since tiny servers are mostly used for testing purposes.

Solution 3 - Php

Unfortuantely composer requires a lot of RAM & processing power. Here are a few things that I did, which combined, made the process bearable. This was on my cloud playpen env.

  1. You may be simply running out of RAM. Enable swap: https://www.digitalocean.com/community/search?q=add+swap (note: I think best practice is to add a seperate partition. Digitalocean's guide is appropriate for their environment)
  2. service mysql stop (kill your DB/mem-hog services to free some RAM - don't forget to start it again!)
  3. use a secondary terminal session running top to watch memory/swap consumption until process is complete.
  4. composer.phar update --prefer-dist -vvv (verbose output [still hangs at some points when working] and use distro zip files). Maybe try a --dry-run too?
  5. Composer is apparently know to run slower in older versions of PHP (e.g. 5.3x). It was still slow in 5.5.9 for me...

Solution 4 - Php

DigitalOcean fix that does not require extra memory - activating swap, here is an example for 1gb:

in terminal run below

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

The above solution will work until the next reboot, after that the swap would have to be reactivated. To persist it between the reboots add the swap file to fstab:

sudo nano /etc/fstab

open the above file add add below line to the file

/var/swap.1 swap swap sw 0 0

now restart the server. Composer require works fine.

Solution 5 - Php

I've got this error when I ran composer install inside my PHP DOCKER container, It's a memory issue. Solved by increasing SWAP memory in DOCKER PREFERENCES from 512MB to 1.5GB

To do that:

Docker -> Preferences -> Rousources

enter image description here

Solution 6 - Php

Run composer self-update and composer clearcache remove vendor and composer.lock restart your local environment and then run php -d memory_limit=-1 /usr/local/bin/composer install

Solution 7 - Php

Increase the memory limit for composer

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

Solution 8 - Php

If you're using docker you can use COMPOSER_PROCESS_TIMEOUT

environment:
  COMPOSER_MEMORY_LIMIT: -1
  COMPOSER_PROCESS_TIMEOUT: 2000 #seconds

Also in big projects composer needs more RAM than 2GB, you can check that with ps -aux while it is running. You will have to add it manually inside docker options, nothing else will help.

enter image description here

Solution 9 - Php

Here's how I succeeded in installing maatwebsite\excel package from composer in Laravel Framework:

  1. I download composer.json file and composer.lock file from my remote server.
  2. I run composer update from local command prompt (then wait until all the install process finished).
  3. Upload composer.lock file to remote server.
  4. run composer install on remote server (then wait until all process finished).
  5. DONE

Solution 10 - Php

composer 2 update have reduced the memory usage

composer self-update
composer update
composer require xxx

Solution 11 - Php

Fix for AWS ec2 Ubuntu Server Php Memory Value Upgrade For Magento 2.3.X

  • Php 7.2 / 7.3

  • nginx

  • ubuntu

  • composer 1.X

  • mariaDB

  • magento 2.3.X

> Error : Updating dependencies (including require-dev) Killed for

  1. Ram Must at least 4GB
  2. Change instance type to suitable or Upgrade Ram
  3. Php Memory Value change
  4. Server Restart
  5. Try to install the same package again

> PHP value update > may locate under '/etc/php/7.2/fpm/php.ini' depend on your server and PHP fpm X.XX version > > Using Seed command 'change as your server requires' > on my case >> /etc/php/7.2/fpm/php.ini

> memory limit type as "3.5G" or "3500MB" > Php 7.2.X

sudo sed -i "s/memory_limit = .*/memory_limit = 3.5G/" /etc/php/7.2/fpm/php.ini
  

> Php 7.3.X

  sudo sed -i "s/memory_limit = .*/memory_limit = 3.5G/" /etc/php/7.3/fpm/php.ini

> Test if applied on 'free -h' command

	free -h

Install-Package Again#

Install extension via Composer

>go to your Magento 2 installation directory

cd /var/www/html/

>with 'superuser' privileges

sudo su

> Start installation

composer require XXXXXX/XXXXXXX

> Enable Module s

php bin/magento module:enable XXXXXX/XXXXXXX


php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy

> Restart

sudo reboot

Enjioy

Solution 12 - Php

I was facing this same issue on my ec2 instance, following steps worked for me :

  1. Copied composer.lock file from my local environment to ec2.

  2. then run sudo composer install and its simply installed all the dependencies for my project.

Solution 13 - Php

I solved it maintaining the below steps in my ubuntu server. Hope it will works for you.

  • Stop my apache server

    sudo service apache2 stop

  • Run composer update

    sudo composer update

  • Start my apache server

    sudo service apache2 start

Solution 14 - Php

> php -d memory_limit=5G composer.phar update

Solution 15 - Php

Solved on Laravel/Homestead (Vagrant Windows)

  1. Edit Homestead.yaml and increase memory from 2048 to 4096

  2. vagrant up

  3. vagrant ssh

  4. Install Symfony with this line on the folder you choose (must be without files)

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

Solution 16 - Php

I get this problem caused for a package that don't update correctly with wildcards, I use directly the last version and it works finally.

"l3/cas-bundle": "~1.0" -------> "l3/cas-bundle": "1.1.13"

Solution 17 - Php

You can try setting preferred-install to "dist" in Composer config.

Solution 18 - Php

I was getting this error in a local Docker environment. I solved it by simply restarting Docker.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestioncherrycodingView Question on Stackoverflow
Solution 1 - PhpAndreasView Answer on Stackoverflow
Solution 2 - PhpBalmipourView Answer on Stackoverflow
Solution 3 - PhpalirobeView Answer on Stackoverflow
Solution 4 - PhpHemamaliniView Answer on Stackoverflow
Solution 5 - PhpInoubliView Answer on Stackoverflow
Solution 6 - PhpfarnooshView Answer on Stackoverflow
Solution 7 - PhpGiorgosKView Answer on Stackoverflow
Solution 8 - Phpmax4everView Answer on Stackoverflow
Solution 9 - PhpTito PanjiView Answer on Stackoverflow
Solution 10 - PhpITWView Answer on Stackoverflow
Solution 11 - PhpSUNNETmediaView Answer on Stackoverflow
Solution 12 - PhpJayesh RaipureView Answer on Stackoverflow
Solution 13 - Phpmonsur.hoqView Answer on Stackoverflow
Solution 14 - PhpAli ÖzyıldırımView Answer on Stackoverflow
Solution 15 - Phpdavidjimenez75View Answer on Stackoverflow
Solution 16 - PhpjuananruizView Answer on Stackoverflow
Solution 17 - PhpXedinUnknownView Answer on Stackoverflow
Solution 18 - PhpLoopyView Answer on Stackoverflow