PHP Composer update "cannot allocate memory" error (using Laravel 4)

ID : 20321

viewed : 33

Tags : phplaravellaravel-4composer-phpphp

Top 5 Answer for PHP Composer update "cannot allocate memory" error (using Laravel 4)

vote vote

91

Looks like you runs out of swap memory, try this

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

as mentioned by @BlackBurn027 on comments below, this solution was described in here

vote vote

81

As composer troubleshooting guide here This could be happening because the VPS runs out of memory and has no Swap space enabled.

free -m 

To enable the swap you can use for example:

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 

Or if above not worked then you can try create a swap file

sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile 
vote vote

70

A bit old but just in case someone new is looking for a solution, updating your PHP version can fix the issue.

Also you should be committing your composer.lock file and doing a composer install on a production environment which is less resource intensive.

More details here: https://github.com/composer/composer/issues/1898#issuecomment-23453850

vote vote

64

I have faced the same issue. I am on a AWS Free Microinstance which has less memory. I always try one of the below options and it always works (Before all this please check if you have the latest version of composer installed)

sudo php -dmemory_limit=750M composer.phar update 

or remove the contents of the vendor folder and try composer update.

sudo rm -rf vendor sudo php -dmemory_limit=750M composer.phar update --no-scripts --prefer-dist sudo php artisan --dump-autoload 

The second option tries to update all the components, if there is no update, it picks up the package from the cache else picks up from the dist

Note: Please change the memory limit as per your choice.

or

Create a swap partition and try. Swap partition is the portion of the hard drive that linux uses as virtual memory when it runs out of physical memory. It's similar to the windows swap file only instead of using an actual file, linux uses a partition on the hard drive instead.

Hope this helps

vote vote

54

Easy, type this commands:

rm -rf vendor/

rm -rf composer.lock

php composer install --prefer-dist

Should work for low memory machines

Top 3 video Explaining PHP Composer update "cannot allocate memory" error (using Laravel 4)

Related QUESTION?