laravel composer更新内存不足


laravel composer update runs out of memory

我正在尝试使用"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。链接是-

如何禁用XDebug

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

更新:我知道错误表明内存减少,但我看到一些线程说即使分配7GB也不起作用;他们的系统挂起了。因此,我正在寻找另一种解决方案。我的服务器在AWS免费层符合条件的EC2实例上。不知道它为RAM提供了多少内存。

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

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

2) 禁用php.ini文件中的/Comment"xdebug"(如果存在)。问题中存在禁用它的链接。

3) 如果以上都不起作用,那么试试这个。在浪费了大约一个小时后,这个终于对我起了作用

rm -rf vendor/
rm -rf composer.lock
php composer install --prefer-dist

4) 回滚到以前版本的composer。它对一些人有效。这可能是一个临时解决方案(因为您将来肯定要升级)。

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/

您看到的错误

PHP致命错误:未捕获异常"ErrorException",消息为"proc_open():fork失败-无法在中分配内存phar:///var/www/fyc/composer.phar/vend或/symfony/console/symfony/Component/console/Application.php:983

表示服务器确实耗尽了ram/内存,不得不停止。更改你的PHP memory_limit并不能解决这个问题。当PHP因为达到内部内存限制而失败时,您会收到一条漂亮的"尝试分配XXX字节的XXXXXX字节"风格的错误消息。

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

  1. 重命名或删除vendor文件夹,然后尝试重新安装而不是更新。Composer有时在内存方面做得更好,因为它不试图解决与现有安装版本的版本依赖性

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

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