Composer update `The following exception is caused by a lack of memory and not having swap configured` error in vagrant

It isn't a bug and fix it - To enable the swap you can use for example:

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

Ref: https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors

Hope it will help you :)


Sometimes swap file has not enough memory for composer update, so create a new one:

(assuming existing /swapfile has 2G, create new /swapfile1 with 8G of your drive space)

$ sudo fallocate -l 8G /swapfile1
$ sudo chmod 600 /swapfile1

$ sudo mkswap /swapfile1
$ sudo swapon /swapfile1

after composer updated, you can remove it and keep only initial file:

$ sudo swapoff /swapfile1
$ sudo rm /swapfile1

This thread suggest that their will not be any fix for that.

Here are two workarounds. You can use each separately or both at the same time.

1st workaround: increase memory limit for the command

In the vagrant machine. Increase the php memory limit for the current command. Run:

php -dmemory_limit=2G /path/to/composer update

2nd workaround: increase guest machine memory

Add this configuration to your vagrant file, so you can temporary increase allocated memory:

$MEMORY = ENV.has_key?('VM_MEMORY') ? ENV['VM_MEMORY'] : "512"

Vagrant.configure("2") do |config|
    [...]
    config.vm.provider "virtualbox" do |v|
        [...]
        v.memory = $MEMORY
        [...]
    end
    [...]
end

Then reload your vagrant machine as follow: VM_MEMORY=2048 vagrant reload

Then, in your vagrant machine, run composer update.