Answers:
“已杀死”消息通常表示您的进程消耗了太多内存,因此,如果可能,您可能只需要向系统中添加更多内存即可。在编写此答案时,我必须将虚拟机的内存增加到至少768MB,以便composer update
在某些情况下可以正常工作。
但是,如果要在实时服务器上执行此操作,则根本不应该使用composer update
。相反,您应该做的是:
composer update
在内存限制不应那么严格的本地环境中运行(例如,直接在便携式笔记本电脑/台式机上运行,或者在便携式计算机/台式机上运行的docker容器/ VM)。git push
composer.lock文件。composer install
在实时服务器上运行。composer install
然后将从.lock文件中读取,每次都获取完全相同的版本,而不是查找每个软件包的最新版本。这使您的应用程序崩溃的可能性较小,并且作曲者使用的内存更少。
在此处了解更多信息:https : //getcomposer.org/doc/01-basic-usage.md#installing-with-composer-lock
或者,您可以将整个vendor
目录上载到服务器,而无需完全运行composer install
,但是您应该先运行composer dump-autoload --optimize
。
如果像我一样,您正在使用一些缺少内存的微型VM,则创建交换文件可以解决问题:
free -m
mkdir -p /var/_swap_
cd /var/_swap_
#Here, 1M * 2000 ~= 2GB of swap memory
dd if=/dev/zero of=swapfile bs=1M count=2000
mkswap swapfile
swapon swapfile
chmod 600 swapfile
echo "/var/_swap_/swapfile none swap sw 0 0" >> /etc/fstab
#cat /proc/meminfo
free -m
顺便说一句,随时为文件选择其他位置/文件名/大小。
/var
可能不是最佳位置,但我不知道会在哪个位置,并且很少在意,因为小型服务器主要用于测试目的。
sudo
–我必须使用root特权来运行这些命令。
swapon: swapfile: swapon failed: Operation not permitted
,为什么?
[root@server _swap_]# dd if=/dev/zero of=swapfile bs=1M count=1000 1000+0 records in 1000+0 records out 1048576000 bytes (1.0 GB) copied, 2.79954 s, 375 MB/s [root@server _swap_]# ls -l total 1024004 -rw------- 1 root root 1048576000 Feb 6 02:12 swapfile [root@server _swap_]# mkswap swapfile Setting up swapspace version 1, size = 1023996 KiB no label, UUID=b3f1110e-5f43-4d1f-bbb1-71cad96680f9 [root@server _swap_]# swapon swapfile swapon: swapfile: swapon failed: Operation not permitted
不幸的是,作曲家需要大量的RAM和处理能力。我做了几件事,加起来使该过程可以接受。这是在我的云游戏围栏环境中。
service mysql stop
(杀死您的DB / mem-hog服务以释放一些RAM-别忘了重新启动它!) top
来监视内存/交换消耗,直到过程完成。composer.phar update --prefer-dist -vvv
(详细输出[工作时仍会挂起],并使用发行版zip文件)。也许也试试--dry-run
?top
用htop
,更方便。
不需要额外内存的DigitalOcean修复-激活交换,这是1gb的示例:
在终端下面运行
/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
sudo /sbin/swapon /var/swap.1
上面的解决方案将一直工作到下一次重新启动,之后必须重新激活交换。要在两次重新引导之间保留它,请将交换文件添加到fstab中:
sudo nano /etc/fstab
打开以上文件,在文件中添加以下行
/var/swap.1 swap swap sw 0 0
现在重新启动服务器。作曲家要求工作正常。
在Laravel / Homestead(Vagrant Windows)上解决
编辑Homestead.yaml
内存并将其从2048增加到4096
无所事事
流浪的SSH
使用此行在您选择的文件夹上安装Symfony(必须没有文件)
COMPOSER_MEMORY_LIMIT=-1 composer create-project symfony/website-skeleton . -s dev
您可以尝试在Composer配置中设置preferred-install
为"dist"
。