Composer: ErrorException:proc_open():派生失败-无法在Phar中分配内存

创建于 2012-07-26  ·  81评论  ·  资料来源: composer/composer

ErrorException:proc_open():派生失败-无法在phar:///var/www/workspace/MyProject/build/composer/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php中分配内存943线

调用堆栈:
0.0523 765208 1. {main}()/var/www/workspace/MyProject/build/composer/composer.phar:0
0.0528 763216 2. require('phar:///var/www/workspace/MyProject/build/composer/composer.phar/bin/composer')/var/www/workspace/MyProject/build/composer/composer.phar: 15
0.0830 3504584 3. Composer \ Console \ Application-> run()phar:///var/www/workspace/MyProject/build/composer/composer.phar/bin/composer:13
0.0865 3865984 4. Symfony \ Component \ Console \ Application-> run()phar:///var/www/workspace/MyProject/build/composer/composer.phar/src/Composer/Console/Application.php:66
31.9725 246198552 5. Symfony \ Component \ Console \ Application-> renderException()phar:///var/www/workspace/MyProject/build/composer/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application .php:113
31.9726 246199624 6. Symfony \ Component \ Console \ Application-> getTerminalWidth()phar:///var/www/workspace/MyProject/build/composer/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application .php:771
31.9726 246199784 7. Symfony \ Component \ Console \ Application-> getSttyColumns()phar:///var/www/workspace/MyProject/build/composer/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application 。 的PHP:848
31.9727 246202984 8. proc_open()phar:///var/www/workspace/MyProject/build/composer/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application。 的PHP:943
31.9728 246204736 9. Composer \ Util \ ErrorHandler :: handle()phar:///var/www/workspace/MyProject/build/composer/composer.phar/src/Composer/Util/ErrorHandler。 的PHP:0

最有用的评论

我想它本身并不是作曲家,但是无论如何:ec2上的微实例没有_any_交换内存(默认情况下),因此,如果内存不足,操作系统会启动进程。 更好的解决方案是创建基于文件的交换(至少是临时的),而不是升级为较小的(因为其成本更高)

例如。

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

记住613M少得多,不仅PHP会消耗它。 我认为没有人能为此责怪作曲家。 有人可以解决这个问题吗?

所有81条评论

为了解决此问题,我必须确保有超过1 gig的可用内存。

我也遇到了这个问题,但是增加PHP memory_limit解决了这个问题。

同样在这里:

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:943
Stack trace:
#0 [internal function]: Composer\Util\ErrorHandler::handle(2, 'proc_open(): fo...', 'phar:///usr/loc...', 943, Array)
#1 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(943): proc_open('stty -a | grep ...', Array, NULL, NULL, NULL, Array)
#2 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(848): Symfony\Component\Console\Application->getSttyColumns()
#3 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(771): Symfony\Component\Console\Application->getTerminalWidth()
#4 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(113): Symfony\Component\Console\Application->renderException(Object(ErrorException), Object(Symfo in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php on line 943

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 on line 943

ErrorException: proc_open(): fork failed - Cannot allocate memory in phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php on line 943

Call Stack:
    0.0001     620632   1. {main}() /usr/local/bin/composer:0
    0.0032     727952   2. require('phar:///usr/local/bin/composer/bin/composer') /usr/local/bin/composer:15
    0.0187    3168240   3. Composer\Console\Application->run() phar:///usr/local/bin/composer/bin/composer:13
    0.0211    3485008   4. Symfony\Component\Console\Application->run() phar:///usr/local/bin/composer/src/Composer/Console/Application.php:66
   13.2099  135622120   5. Symfony\Component\Console\Application->renderException() phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:113
   13.2099  135622968   6. Symfony\Component\Console\Application->getTerminalWidth() phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:771
   13.2099  135623064   7. Symfony\Component\Console\Application->getSttyColumns() phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:848
   13.2099  135625208   8. proc_open() phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:943
   13.2100  135626416   9. Composer\Util\ErrorHandler::handle() phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php:943

有关系统的更多信息:

php -v
PHP 5.3.10 (cli) (built: Feb 20 2012 16:56:36) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
    with Xdebug v2.2.1, Copyright (c) 2002-2012, by Derick Rethans

两次遇到相同的错误,但是可以说:它大约一个小时前可以工作(设置没有任何更改),现在在第三次尝试中可以再次工作(完全没有任何更改)。

$ php -v
PHP 5.4.4-4~precise+1 (cli) (built: Aug  6 2012 13:01:46) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

更新:

好,算了我忘了再次启用交换...机器_really_内存不足...

尝试对Amazon AWS EC2 Micro实例进行部署时遇到了相同的问题。 这些实例总共只有613MB的内存,因此composer无法分配足够的内存来运行更新。 升级到具有1.7GB总内存的Small实例可以解决此问题。

我有同样的问题..作曲家真的需要那么多内存吗? :-O

我想它本身并不是作曲家,但是无论如何:ec2上的微实例没有_any_交换内存(默认情况下),因此,如果内存不足,操作系统会启动进程。 更好的解决方案是创建基于文件的交换(至少是临时的),而不是升级为较小的(因为其成本更高)

例如。

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

记住613M少得多,不仅PHP会消耗它。 我认为没有人能为此责怪作曲家。 有人可以解决这个问题吗?

使用微型实例的人们在更新作曲家并将您的锁文件更新为新格式之后,应该再也没有问题了,请参阅#1109。 如果您在安装以外的其他东西上遇到内存问题,请参阅#600。

我再次遇到这个问题。 这是我的转储:

PHP Fatal error:  Uncaught exception 'ErrorException' with message 'proc_open(): fork failed - Cannot allocate memory' in phar:///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php:969
Stack trace:
#0 [internal function]: Composer\Util\ErrorHandler::handle(2, 'proc_open(): fo...', 'phar:///vagrant...', 969, Array)
#1 phar:///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php(969): proc_open('stty -a | grep ...', Array, NULL, NULL, NULL, Array)
#2 phar:///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php(874): Symfony\Component\Console\Application->getSttyColumns()
#3 phar:///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php(798): Symfony\Component\Console\Application->getTerminalWidth()
#4 phar:///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php(113): Symfony\Component\Console\Application->re in phar:///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php on line 969

使用性能分析进行试运行将返回以下内存使用信息:

Memory usage: 25.95MB (peak: 67.15MB), time: 9.21s

你好

只是一个猜测:您是否在AWS-micro上运行它? 你有交换吗
启用?

问候,
塞巴斯蒂安

2012/12/20 Dan Horrigan [email protected]

我再次遇到这个问题。 这是我的转储:

PHP致命错误:在消息phar:///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component中出现未捕获的异常“ ErrorException”,并显示消息“ proc_open():fork失败-无法分配内存” /控制台/应用程序。 的PHP:969
堆栈跟踪:

0 [内部功能]:Composer \ Util \ ErrorHandler :: handle(2,'proc_open():fo ...','phar:/// vagrant ...',969,数组)

1 phar:///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php(969):proc_open('stty -a | grep ...',数组,NULL,NULL,NULL,数组)

2 phar:///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php(874):Symfony \ Component \ Console \ Application-> getSttyColumns()

3 phar:///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php(798):Symfony \ Component \ Console \ Application-> getTerminalWidth()

4 phar:///vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php(113):Symfony \ Component \ Console \ Application->在phar中: ///第969行上的//vagrant/www/api-v3/composer.phar/vendor/symfony/console/Symfony/Component/Console/Application.php

使用性能分析进行试运行将返回以下内存使用信息:

内存使用:25.95MB(峰值:67.15MB),时间:9.21s

-
直接回复此电子邮件或在Gi tHub上查看它

github.com/KingCrunch

根据堆栈跟踪, @ dhorrigan ouch看起来像致命错误是在渲染异常时触发的(因为使用proc_open检查终端宽度)。 看起来这不是php内存限制,而是机器的内存用完了,所以我建议清除其他内容,如果可以在内存更大的其他地方运行update,请使用install而不是update运行它。 从锁定文件安装使用的内存很少。

我正在Vagrant框中运行它,并且运行了很多功能,但这是我第一次看到它。 我将尝试重新构建具有更多内存的盒子,然后看看会发生什么。 我会跟进。

老实说67MB并不大。 我可以看到如果它失败了怎么回事,但是在当今这一时代,要请求数百兆的峰值内存并不多;)

是的,发现了问题,虚拟机只有6MB的可用内存(512 MB),所以。 哈哈,我将其升级为具有1GB的内存。 应该先检查一下。 继续。

@Seldaek微型实例有590MB,默认情况下没有交换。 对于这种情况,可以正常工作,但是一旦某些应用程序需要更多一点,它就会完全崩溃。 因此,如前所述:创建交换可捕获此问题:)仅需10或20 MB。

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

@KingCrung是正确的。 所描述的只是添加交换到我的EC2实例微观这里

现在,更新依赖项就像一个魅力。

@andremaha完美! 谢谢!! :)

我也遇到这个问题。 4GB Macbook Air上有1GB Vagrant。 即使将更新限制为特定供应商,也会发生。

PHP致命错误:phar:/// usr / local / bin / composer / vendor / symfony / console / Symfony / Component / Console / Application中未捕获的异常“ ErrorException”,消息为“ proc_open():fork失败-无法分配内存” 。 的PHP:1033
堆栈跟踪:

0 [内部功能]:Composer \ Util \ ErrorHandler :: handle(2,'proc_open():fo ...','phar:/// usr / loc ...',1033,Array)

1 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(1033):proc_open('stty -a | grep ...',Array,NULL, NULL,NULL,数组)

2 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(911):Symfony \ Component \ Console \ Application-> getSttyColumns()

3 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(876):Symfony \ Component \ Console \ Application-> getTerminalDimensions()

4 phar:///usr/local/bin/composer/vendor/symfony/console/Symfony/Component/Console/Application.php(810):Symfony \ Component \ Console \ Application-> getTerminalWidth()

可以通过无用的停止&&无用的&&无用的ssh解决问题,然后再次运行。

内存使用:102.39MB(峰值:427.97MB),时间:104.79s

@adamsmeat谢谢! 我将您的解决方案用于我的DO实例

@adamsmeat-我可以在装有库存的Ubuntu 12.04 512MB Digital Ocean机器上确认您的解决方案是所需的。 现在,Symfony2已安装并且可以根据需要运行。

@adamsmeat挽救了我的性命,只是在我的EC2微型实例上添加了512MB交换空间,问题得以解决。

我也遇到这样的问题,是使用vagrant box的环境,初始的内存为512M,增加到2048G后问题解决了。

使用Digital Ocean 512MB切片遇到了此问题...不得不https://github.com/composer/composer/issues/945#issuecomment -8552757

在这里@ prodev42

我尝试将composer.lock复制到实时服务器并工作。 用命令

php composer.phar --verbose install

@paparts听起来好像您没有将composer.lock版本化? 根据经验:对于应用程序版本化,对于库,则不行。 您不应该在实时系统上运行update ,因为很可能,迟早会引入一个软件包,这会破坏您的应用程序,而无需在本地进行测试。 composer.lockcomposer.phar install可以确保安装了该版本的软件包,并且可以针对您的应用程序进行开发。

我没有注意到我使用的框架已在忽略列表中列出了composer.lock 。 感谢您指出了这一点。

今天有EC2微型实例的问题。 将PHP memory_limit增加到512M可以解决此问题。

那会是一件好事吗? 在数字海洋中,内存仅为512mb,而将PHP占用最多这样的内存可能会做您自己的VM。

哦,一点也不。 不用说它不是生产服务器。

我正在安装需要symfony / event-dispatcher的软件包,因此由于上述错误,我现在无法再安装单个软件包:S

当我在php cli ini中启用opcache.enable_cli时得到了这个

@ younes0那是相当模糊的描述。 您在这里阅读了整个讨论吗? 通常是因为您通常在很小的云实例或VM中就没有启用交换功能而耗尽了内存。

@KingCrunch在我的情况下,这与内存不足无关,当我尝试将opcache.enable_cli php选项设置为On (VM或不)

同样的错误。

我有一个带1Gb RAM的digitalocean小滴。

当我开始php composer.phar update它吃光了所有可用的RAM,然后引发异常。

在我的cli/php.ini我有memory_limit = -1

如果解决方案是仅针对作曲者升级到具有更大RAM的Droplet,我将在本地计算机上执行php composer.phar update ,然后将文件上传到我的vps。

仅包括composer.lock

@paparts谢谢,它有效。

我在本地计算机上执行php composer.phar update ,然后将composer.lock上传到VPS并执行php composer.phar install

@moldcraft上面的某处描述了另一种解决方案:只需创建一个交换内存,这相当慢,但至少可以防止您发生OOM错误。

@KingCrunch上面的某处描述了另一种解决方案

如果@yooper将使用找到的解决方案更新问题描述,那将是很好的

ProTip:交换技巧也适用于与Vagrant一​​起运行的本地VirtualBox VM。

我尝试使用ajax插入,但这不起作用,错误是:未捕获的异常:内存不足。
任何想法。

@sivagurupr我不知道您在说什么,但我

此代码中有任何错误。

2015年3月12日,星期四,下午4:08,塞巴斯蒂安·克雷布斯(Sebastian Krebs) [email protected]
写道:

@sivagurupr https://github.com/sivagurupr我不知道你是什么
在谈论,但我有感觉,这与这个问题无关。
Composer(CLI)没有任何Ajax功能[image::confused:]
但是,最后,在阅读注释后,“内存不足”应该
不言自明[image::wink:]

-
直接回复此电子邮件或在GitHub上查看
https://github.com/composer/composer/issues/945#issuecomment -78456750。

在Vagrant机器上安装http://github.com/sabre/xml时,我遇到了这个问题。 但是我设法通过使用上面的示例启用交换来修复它。

我有同样的错误,但有一个大实例:4GB RAM和4GB交换。 可用的RAM永远不会耗尽,更不用说可用/缓存的RAM了,而且交换不会被触及!

这是这台新机器CentOS / CloudLinux 7.1上第一次运行作曲家更新。

有任何想法吗? 请?

我在Vagrant Box中运行时遇到相同的错误。 出现错误时,我有2GB的内存。 我将ram扩展到4gb并成功了。 但是,仍然需要如此多的内存仍然很奇怪。

我再次遇到此问题,并添加了composer.lock无效。 但是我改为尝试使用交换空间而不是扩展大量内存。 关于digitalocean的文章非常漂亮https://www.digitalocean.com/community/tutorials/how-to-configure-virtual-memory-swap-file-on-a-vps

我也遇到了问题:

PHP Warning:  proc_open(): fork failed - Cannot allocate memory in phar:///home/...../sculpin.phar/vendor/symfony/console/Symfony/Component/Console/Application.php on line 974

我的memory_limit设置为-1

我的free输出:

             total       used       free     shared    buffers     cached
Mem:          1992       1331        660        122          8        217
-/+ buffers/cache:       1105        886
Swap:          255        237         18

我也遇到了这个问题,但是增加PHP memory_limit解决了这个问题。

我也是

memory_limit设置为-1时遇到同一问题。 对我唯一有效的方法是重新加载计算机。

如何在Ubuntu 14.04上添加交换
https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04

本文为我提供了512M RAM实例的帮助。

[已解决]如果要在虚拟机中运行该虚拟机,请通过vagrant halt命令或正常停止来停止虚拟机。

根据您的应用程序更改RAM大小,就我而言,我将内存更新为1024MB。
默认为256MB;

即它起作用

停止mysql httpd或nginx服务并再次运行

运行作曲家

并重启服务

@sergiohermes

仅当nginx和/或mysql巧合消耗了作曲家错过的大量内存时,这才起作用。 在大多数情况下,也可能无法停止基本服务。 您应该真正以物理方式或以交换分区/文件的形式投资于内存。 这一切都已经记录在该线程中。

我知道,无论如何,这是一种无需交换的方法。
但最合适的是创建一个交换。 毫无疑问。
看一下“ centos”发现的有趣参考。

https://www.digitalocean.com/community/tutorials/additional-recommended-steps-for-new-centos-7-servers

我相信会添加此线程。

哦,我用交换解决了,谢谢

您可以通过增加php.ini文件的内存大小来避免这种情况,这是错误的选择。 更好地删除缓存并重建软件包。

Delete composer cache: `sudo rm -R ~/.composer`
Delete vendor folder: `sudo rm -R vendor`
Rebuild the vendor packages: `composer update`

或者,我可以通过以下方式完成:

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

@ mohitg-bs我猜你把事情混了

  • 删除文件不会释放RAM
  • 这与PHP memory_limit无关,而是整个系统的(虚拟)内存。 没有ini设置,可以创建您的RAM。

我在Vagrant中解决了相同的问题。

我很容易在Vagrant虚拟机上增加了内存http://www.josheaton.org/increase-memory-vagrant-virtual-machine/
然后,我增加了memory_limit的值
并删除作曲家缓存: sudo rm -R〜/ .composer
最后流浪者重装

我在通过Vagrant运行的Virtual Box上遇到了同样的问题。
通过增加VBox内存进行修复。

配置从vb.memory = 512更改vb.memory = 1024

我添加了交换内存,它解决了我的问题。

您的交换内存用完了,试试这个

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

要添加交换文件:

确定新交换文件的大小(以兆字节为单位),然后乘以1024,以确定块数。 例如,一个64 MB交换文件的块大小为65536。
在shell提示符下,以root用户身份键入以下命令,其count等于所需的块大小:
dd if = / dev / zero of = / swapfile bs = 1024 count = 65536
使用以下命令设置交换文件:
mkswap / swapfile
要立即启用交换文件,但不能在启动时自动启用它:
swapon /交换文件
要在引导时启用它,请编辑/ etc / fstab以包括以下条目:
/ swapfile swap swap默认值0 0
下次系统引导时,它将启用新的交换文件。

添加新的交换文件并启用它之后,请通过查看cat / proc / swaps或free命令的输出来验证它是否已启用。

谢谢!

提示-如果添加交换不能解决作曲家的内存不足/无法分配错误:

  • 添加交换后重新启动计算机。 添加8G交换后,我发现作曲家错误没有消失。 但重新启动后,它可以工作了。
  • 我还关闭了另一台正在运行的VM,并关闭了带有太多标签的Chrome

(我在具有16Gb RAM的macOS X Sierra 10.12.4上的开发环境中使用composer)。

这个解决了吗我已经在全球范围内更新了Composer。 另外,我为每个@ gillera235建议创建了1GB的交换空间。 我仍然收到相同的错误。 我该怎么做才能排除故障?

如果有帮助,我正在使用免费的微型EC2实例。

将composer.lock文件推送到服务器上并执行

作曲家-详细安装

这样,它不会占用太多内存,并且根据composer.lock文件中的版本安装更新的软件包非常快。

当内存不足时会发生
尝试这些步骤
1)服务mysql停止
2)发表您的评论
3)服务mysql启动

@ sagarshah16如果我没有MySQL服务会怎样?

尝试找到您正在运行的服务之一占用更多的内存空间。 如果不是mysql。

是的,ig更新作曲家应该解决该问题,可悲的是我通过git bash更新。 它总是抛出相同的错误以进行更新。 因此,对于Windows用户,只需确保使用cmd.exe

早点击中错误。 在EC2微型实例上的Ubuntu 16.04上。
通过添加1G交换文件解决。

$ apt install swapspace 
$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="16.04.3 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.3 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

参考:
http://manpages.ubuntu.com/manpages/xenial/man8/swapspace.8.html

谢谢Jeroen T. Vermeulen

Enthusiasm is the light of knowledge. Unknown author.

O estusiasmo é luz do conhecimento. Autor desconhecido.

如果未启用内存过量使用,则会加剧此问题。 没有内存过量使用的情况下,分叉效率非常低。 本质上,当您进行分叉时,您将通过创建另一个相同的进程来使当前进程的承诺内存使用量增加一倍。 此内存的大部分在父进程和子进程之间共享,但是是写时复制的,因此任何写操作都会导致共享内存被复制。 启用过量提交后,系统将允许该重复的共享内存,但是如果您写入共享内存,则可能没有足够的物理RAM来处理副本。 禁用过量提交后,系统将不允许您首先分配内存。

使用1.4GIG获取此错误...

$ free -m; composer require --dev phpro/grumphp
              total        used        free      shared  buff/cache   available
Mem:           2000         416        1277          21         305        1405
Swap:             0           0           0
Using version ^0.14.1 for phpro/grumphp
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 12 installs, 0 updates, 0 removals
  - Installing symfony/dependency-injection (v3.4.11): The following exception is caused by a lack of memory or swap, or not having swap configured
Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details


  [ErrorException]                                   
  proc_open(): fork failed - Cannot allocate memory

解决此问题的方法是向实例添加交换(即分页)空间。

分页通过在硬盘驱动器上创建一个区域并将其用于额外的内存来工作,该内存比普通内存要慢得多,但可用空间更多。

要为您的实例添加此额外空间,请输入:

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

如果您需要的数量超过1024,则将其更改为更高的值。

要在重新启动后默认启用它,请将此行添加到/ etc / fstab中:

/var/swap.1交换交换默认值为0 0

根据堆栈跟踪, @ dhorrigan ouch看起来像致命错误是在渲染异常时触发的(因为使用proc_open检查终端宽度)。 看起来这不是php内存限制,而是机器的内存用完了,所以我建议清除其他内容,如果可以在内存更大的其他地方运行update,请使用install而不是update运行它。 从锁定文件安装使用的内存很少。

非常感谢,我没有执行composer install而是运行composer update composer install 。 哪个修复了!

它比必须增加php.ini中的内存大小或增加实例内存本身更好。

打开交换解决了我的问题。

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

你们当中有多少人会发布在该线程中编写的内容? @jemerocay ,您阅读主题了吗? 上面同样贴有〜10条消息。

投稿人:请关闭此。

此页面是否有帮助?
0 / 5 - 0 等级