Reputation: 9644
I just can't solve this one.
I'm on Linode 1G RAM basic plan. Trying to install a package via Composer and it's not letting me. My memory limit is set to "-1" on PHP.ini
Is there anything else I can do to get this installed?
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
Upvotes: 195
Views: 264976
Reputation: 370
Use the --no-scripts
flag when running composer update
. This will prevent any scripts from running during the update, which can help if one of the scripts is using too much memory.
composer update --no-scripts
Use the --prefer-dist
flag when running composer update
. This will cause Composer to download a zip file of the package, rather than cloning the entire repository. This can help reduce the amount of memory needed during the update.
composer update --prefer-dist
Upvotes: -1
Reputation: 701
In my case, when Laravel ver 7,8 and composer ver 1, this error came out. I updated the version of Composer to 2 and it was resolved.
composer self-update
Or
composer self-update --2
Back to previous version:
composer self-update --rollback
Upvotes: 0
Reputation: 139
This worked for me:
According to composer's documentation, Composer 1 used much more memory and upgrading to the latest version will give you much better and faster results.
https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors
Upvotes: -1
Reputation: 316
I had the same problem using composer in wsl2.
Microsoft WSL team introduced a file called .wslconfig for tweaking WSL2 settings.
You basically have to create that file at %UserProfile%.wslconfig and set the settings below.
[wsl2]
memory=6GB # Any size you feel like
swap=30GB
localhostForwarding=true
Restart your computer, and from now on, you won't have any problem with high memory consumption.
Hopefully, it helps!
Upvotes: 0
Reputation: 3557
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
Upvotes: 127
Reputation: 2093
In my case I tried everything that was listed above. I was using Laravel and Vagrant with 4GB of memory and a swap, with memory limit set to -1. I deleted the vendor/ and tried other PHP-versions. Finally, I managed it to work by running
vagrant halt
vagrant up
And then composer install worked again as usual.
Upvotes: 1
Reputation: 1
Please disable js bundling and increase memory. That should fix it. I fixed mine by disabling js bundling.
Thanks
Upvotes: -2
Reputation: 195
you can use the following to check your free (swap) memory
free -m
total used free shared buffers cached
Mem: 2048 357 1690 0 0 237
-/+ buffers/cache: 119 1928
Swap: 0 0 0
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
Upvotes: 5
Reputation: 5055
I increased the PHP memory_limit
from the default 128M to 512M and restart the server. That solved the problem.
Upvotes: 3
Reputation: 81
I tried by just deleting the vendor folder and composer.lock file and then i run the command composer clear-cache
and then composer install
. So it working without any error.
Upvotes: 7
Reputation: 431
composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Update memory on Server and require '4G' Change 4GB Ram [try to change server type or add more ram]
2 Files We need to edit
on command
# cd /var/www/html
# nano .htaccess
and edit "memory_limit 756M”
to 4G
Php ini on php 7.0
# cd ~
# php –-ini
# sudo nano /etc/php-7.0.ini
memory_limit = 128M to 4G
#AWS #AMAZONLINUX #MAGENTO2 #PHP7.0
Upvotes: -1
Reputation: 4546
Here are the steps to fix the problem: (instant fast SWAP file allocation method used)
Server SWAP Setup (Ubuntu 16.04 SWAP to Fix Out of Memory Errors)
Check if you have swap already, memory and disk size:
sudo swapon -s
free -m
df -h
Make swap file: (change 1G to 4G if you want 4GB SWAP memory)
sudo fallocate -l 1G /swapfile
Check swap file:
ls -lh /swapfile
Assign Swap File:
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
Check if swap OK, memory and disk size:
sudo swapon -s
free -m
df -h
Attach Swap File on System Restart:
sudo nano /etc/fstab
/swapfile none swap sw 0 0
Adjust Swap File Settings:
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
SWAP File Priority: (0-100% => 0: Don't put to swap, 100: Put on SWAP and free the RAM)
vm.swappiness=10
Remove inode from cache: (100: system removes inode information from the cache too quickly)
vm.vfs_cache_pressure = 50
Upvotes: 13
Reputation: 462
edit php.ini file and increase memory_limit value.
memory_limit=1G
will solve this issue.
Upvotes: -1
Reputation: 137
Try that:
/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/sbin/swapon /var/swap.1
Upvotes: 7
Reputation: 12109
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
Upvotes: 450
Reputation: 531
Make a swap and run composer command again. I hope it'll work for you.
$ 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
Upvotes: 1
Reputation: 1024
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
This work for me on Centos 6
Upvotes: 2
Reputation: 960
I solved the same problem in Vagrant. I increased the value of memory_limit and delete composer cache: sudo rm -R ~/.composer and finally vagrant reload.
Upvotes: 2
Reputation: 938
I get into this situation most of the times so normally i used to follow the step of setting the swap memory.
But now i found a simple alternate trick which worked for me.
Run
composer update --no-dev
Other than composer update
Upvotes: 2
Reputation: 73
Sometimes by self-updating composer it solves the problem
php composer.phar self-update
Cheers
Upvotes: 3
Reputation: 748
Here is the workaround that I found that works for me every time:
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
Upvotes: 7
Reputation: 195
I had a same issue on vagrant. I fixed it by allcate more memory.
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
Upvotes: 10
Reputation: 637
I had a similar issue on the cheapest server (512MB RAM) hosted with DigitalOcean, and I was also running Jenkins CI on the same server. After I stopped the Jenkins instance the composer install command worked (well, to a point, it failed with the mcrypt extension missing besides already being installed!).
Maybe if you have another app running on the server, maybe its worth trying to stop it and re-running the command.
Upvotes: -1
Reputation: 5803
Easy, type this commands:
rm -rf vendor/
rm -rf composer.lock
php composer install --prefer-dist
Should work for low memory machines
Upvotes: 16
Reputation: 1732
have same problem with php composer.phar update on my 512mb hosting.
solved with php composer.phar install
Upvotes: 0
Reputation: 3803
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
Upvotes: 113
Reputation: 11701
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
Upvotes: 40
Reputation: 1812
This seems to be a recurring issue with 1GB and smaller server instances. Apart from trying to shutdown processes and tweak swap settings, you could install on a local machine and upload.
Upvotes: 4