我在一个流浪的VirtualBox环境中安装了带有composer的php5.5。
当我尝试任何作曲家的命令时,随机出现以下错误:
The following exception is caused by a lack of memory and not having swap configured
这不是一个bug,修复它-要启用交换,您可以使用例如:
/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/sbin/swapon /var/swap.1
裁判:https://getcomposer.org/doc/articles/troubleshooting.md proc-open-fork-failed-errors
希望对你有帮助
有时交换文件没有足够的内存来更新编曲器,所以创建一个新的:
(假设现有/swapfile有2G空间,创建新的/swapfile1,占用8G硬盘空间)
$ sudo fallocate -l 8G /swapfile1
$ sudo chmod 600 /swapfile1
$ sudo mkswap /swapfile1
$ sudo swapon /swapfile1
作曲家更新后,你可以删除它,只保留初始文件:
$ sudo swapoff /swapfile1
$ sudo rm /swapfile1
这个线程建议他们不会有任何修复
这里有两个变通方法。可以分别使用,也可以同时使用。
第一个解决方法:增加命令的内存限制在流浪机器中。增加当前命令的php内存限制。运行:
php -dmemory_limit=2G /path/to/composer update
第二个解决方案:增加客户机内存
将这个配置添加到您的流浪文件中,这样您就可以临时增加分配的内存:
$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
然后重新加载您的漫游机,如下所示:VM_MEMORY=2048 vagrant reload
然后,在您的漫游机器中,运行composer update
这就解决了我的问题:
sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo /sbin/swapon /var/swap.1
这可以暂时有用并解决问题。要永久添加到swap中,请遵循
查看设备上的空闲内存:free -m
进入php.ini文件并更新memory_limit为512MB或1G