laravel composer update runs out of memory

2020-04-19 04:58发布

I am trying to update laravel repository using 'php composer.phar update' command. But I am getting this error -

- Removing symfony/translation (v2.4.8)
PHP Fatal error:  Uncaught exception 'ErrorException' with message 'proc_open():
 fork failed - Cannot allocate memory' in phar:///var/www/fyc/composer.phar/vend
or/symfony/console/Symfony/Component/Console/Application.php:983

I came across links which told to disable 'xdebug' to solve this problem but its nowhere installed on my system. I am using Ubuntu 14.04, PHP 5.5.18, Zend 2.5.0. The links are -

How to disable XDebug

https://github.com/composer/composer/issues/1898 (read last 15 days comments)

Update: I know that the error says that memory is less but I saw some threads which said that allocating even upto 7GB doesn't work & their system gets hung. So, I am looking for an alternative solution. My server is on AWS free tier eligible EC2 instance. Don't know how much memory it gives for RAM.

2条回答
姐就是有狂的资本
2楼-- · 2020-04-19 05:35

The error you're seeing

PHP Fatal error: Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar:///var/www/fyc/composer.phar/vend or/symfony/console/Symfony/Component/Console/Application.php:983

Indicates the server literally ram out of RAM/memory and had to halt. Changing your PHP memory_limit won't solve this. When PHP fails because it hit its internal memory limit, you get a nice "tried to allocate XXX bytes of a total XXXXXX bytes" style error message.

Composer can eat up a lot of memory when it's trying to resolve version dependencies. The three things I'd try here are

  1. Rename or delete your vendor folder and try re-installing instead of updating. Composer's sometimes better about memory when it's not trying to resolve a version dependency with existing installed versions

  2. Get a server with more memory

  3. Investigate what else may be eating up a lot of RAM on your server

查看更多
混吃等死
3楼-- · 2020-04-19 05:46

I found out that some things can solve this problem -

1) Update your PHP version. Versions prior to 5.4.19 don't work I think. But just keep it to the latest.

2) Disable/Comment 'xdebug' in your php.ini file if its present. A link to disable it is present in the question.

3) If non of the above works then try this one. This worked for me finally after wasting an hour or so.

rm -rf vendor/

rm -rf composer.lock

php composer install --prefer-dist

4) Rollback to a previous version of composer. It worked for some people. This might be a temporary solution ( because you definitely want to upgrade in future).

5) This one was killer. This one also worked You can create a SWAP memory using your hard disk. This means that memory in hard disk will be used as additional RAM but the access to it would be slower (just like normal hard disk access). This is more useful for EC2 instance users who have very less RAM. More information for this is here -

https://github.com/composer/composer/issues/945#issuecomment-12548720

http://www.the-tech-tutorial.com/adding-swap-to-any-ec2-instance/

查看更多
登录 后发表回答