Composer更新“以下异常是由于内存不足和未配置交换而引起的”

Rap*_*aël 3 php memory virtualbox vagrant composer-php

我在无业游民的VirtualBox环境中安装了带有作曲家的php5.5。

当我尝试任何作曲家的命令时,以下错误随机出现:

The following exception is caused by a lack of memory and not having swap configured

我该如何解决?

Ana*_*y R 18

有时交换文件没有足够的内存用于作曲家更新,所以创建一个新的:

(假设现有的 /swapfile 有 2G,用 8G 的驱动器空间创建新的 /swapfile1)

$ sudo fallocate -l 8G /swapfile1
$ sudo chmod 600 /swapfile1

$ sudo mkswap /swapfile1
$ sudo swapon /swapfile1
Run Code Online (Sandbox Code Playgroud)

作曲家更新后,您可以将其删除并仅保留初始文件:

$ sudo swapoff /swapfile1
$ sudo rm /swapfile1
Run Code Online (Sandbox Code Playgroud)


Ale*_*lex 16

修复它不是一个错误-要启用交换,您可以使用例如:

/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/sbin/swapon /var/swap.1
Run Code Online (Sandbox Code Playgroud)

参考:https : //getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors

希望它能对您有所帮助:)


Rap*_*aël 6

该线程表明他们不会对此进行任何修复。

这里有两个解决方法。您可以单独使用,也可以同时使用两者。

第一个解决方法:增加命令的内存限制

在流浪机器中。增加当前命令的 php 内存限制。跑:

php -dmemory_limit=2G /path/to/composer update
Run Code Online (Sandbox Code Playgroud)

第二种解决方法:增加客户机内存

将此配置添加到您的 vagrant 文件中,以便您可以临时增加分配的内存:

$MEMORY = ENV.has_key?('VM_MEMORY') ? ENV['VM_MEMORY'] : "512"

Vagrant.configure("2") do |config|
    [...]
    config.vm.provider "virtualbox" do |v|
        [...]
        v.memory = $MEMORY
        [...]
    end
    [...]
end
Run Code Online (Sandbox Code Playgroud)

然后按如下方式重新加载您的流浪机器: VM_MEMORY=2048 vagrant reload

然后,在你的 vagrant 机器上,运行composer update.