laravel composer update耗尽内存

时间:2014-11-10 18:20:47

标签: php laravel laravel-4

我正在尝试使用' php composer.phar update'更新laravel资源库。命令。但是我收到了这个错误 -

- 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

我遇到过禁用' xdebug'解决这个问题,但它在我的系统上没有安装。我使用的是Ubuntu 14.04,PHP 5.5.18,Zend 2.5.0。链接是 -

How to disable XDebug

https://github.com/composer/composer/issues/1898(阅读最近15天的评论)

更新:我知道错误说内存较少,但我看到一些线程表示分配甚至高达7GB并不能正常工作&他们的系统挂了。所以,我正在寻找替代解决方案。我的服务器位于符合AWS免费等级的EC2实例上。不知道它为RAM提供了多少内存。

2 个答案:

答案 0 :(得分:6)

我发现有些东西可以解决这个问题 -

1)更新您的PHP版本。我认为5.4.19之前的版本不起作用。但请保持最新状态。

2)在php.ini文件中禁用/注释'xdebug'(如果存在)。问题中存在一个禁用它的链接。

3)如果不是上述作品,那么试试这个。在浪费了一个小时左右之后, 最终为我工作

rm -rf vendor/

rm -rf composer.lock

php composer install --prefer-dist

4)回滚到以前版本的作曲家。它适用于某些人。这可能是一个临时解决方案(因为您肯定希望将来升级)。

5) 这个是杀手 这个也有效您可以使用硬盘创建SWAP内存。这意味着硬盘中的内存将用作额外的RAM,但对它的访问速度会更慢(就像普通的硬盘访问一样)。这对于RAM较少的EC2实例用户更有用。有关这方面的更多信息,请访问 -

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

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

答案 1 :(得分:0)

您看到的错误

  

PHP致命错误:未捕获的异常' ErrorException'消息' proc_open():    fork失败 - 无法分配内存'在phar:///var/www/fyc/composer.phar/vend   或/ symfony的/控制台/ Symfony的/组件/控制台/ Application.php:983

表示服务器确实从RAM /内存中拉出来并且不得不停止。更改PHP memory_limit无法解决此问题。当PHP因为达到内部内存限制而失败时,你会得到一个很好的"试图分配总共XXXXXX字节的XXX字节"样式错误消息。

当Composer尝试解决版本依赖关系时,会占用大量内存。我在这里尝试的三件事是

  1. 重命名或删除vendor文件夹,然后尝试重新安装而不是更新。当编译器未尝试使用现有已安装的版本解决版本依赖关系时,它有时会更好地使用内存

  2. 获取内存更多的服务器

  3. 调查服务器上可能占用大量内存的其他内容