Composer在更新时被杀死

问题描述 投票:65回答:8

我遇到了问题,我试图在我的Laravel 4项目中安装一个新软件包。但是当我运行php composer.phar update时,我得到了这个:

Loading composer repositories with package information
Updating dependencies (including require-dev)
Killed

我已经在互联网上寻找问题,看到内存是问题,我想我没有足够的RAM可用,我已经检查了这个我有大约411mb免费。作曲家真的需要更多的内存吗?

php laravel laravel-4 composer-php
8个回答
200
投票

“被杀”消息通常意味着您的进程消耗了太多内存,因此您可能只需要为系统添加更多内存(如果可能)。在撰写此答案时,我不得不将虚拟机的内存增加到至少768MB,以便在某些情况下让composer update工作。

但是,如果您在实时服务器上执行此操作,则根本不应使用composer update。你应该做的是:

  1. 在本地环境(本地物理机或开发虚拟机)中运行composer update
  2. 上传或git push composer.lock文件
  3. 在实时服务器上运行composer install

然后composer install将从.lock文件中读取,每次都获取完全相同的版本,而不是查找每个包的最新版本。这使您的应用程序不太可能破坏,并且作曲家使用更少的内存。

在这里阅读更多:https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file


0
投票

运行composer self-updatecomposer clearcache删除vendor和composer.lock重启你的本地环境,然后运行php -d memory_limit=-1 /usr/local/bin/composer install


0
投票

我得到这个问题导致一个包没有使用通配符正确更新,我直接使用最后一个版本,它最终工作。

“l3 / cas-bundle”:“~1.0”------->“l3 / cas-bundle”:“1.1.13”


-1
投票

我在一个位置Docksal环境中收到此错误。我通过简单地重启Docker解决了这个问题。


45
投票

如果像我一样,你正在使用一些缺少内存的微型虚拟机,那么创建交换文件就可以了:

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可能不是最好的地方,但我不知道哪个地方会,并且很少关心,因为小型服务器主要用于测试目的。


14
投票

这是因为您的主机内存不足,请查看this教程


9
投票

不幸的是,作曲家需要大量的RAM和处理能力。以下是我所做的一些事情,这些事情相结合,使这个过程变得可以忍受。这是我的云围栏env。

  1. 您可能只是耗尽了RAM。启用swap:https://www.digitalocean.com/community/search?query=how+to+add+swap(注意:我认为最佳做法是添加一个单独的分区.Digitalocean的指南适用于他们的环境)
  2. service mysql stop(杀死你的DB / mem-hog服务以释放一些RAM - 不要忘记再次启动它!)
  3. 使用运行top的辅助终端会话来监视内存/交换消耗,直到进程完成。
  4. composer.phar update --prefer-dist -vvv(详细输出[工作时仍然挂在某些点]并使用发行文件zip文件)。也许尝试一下--dry-run
  5. 很明显,Composer在旧版本的PHP中运行速度较慢(例如5.3x)。对我来说,5.5.9仍然很慢......

3
投票

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

现在重启服务器。作曲家要求工作正常。


1
投票

你可以尝试这样的事情

php -d memory_limit=4G /usr/local/bin/composer update

0
投票

你可以尝试在WP CLI的Composer配置中将preferred-install设置为"dist" - 通常是在~/.wp-cli/packages/composer.json


0
投票

php -d memory_limit = 5G composer.phar更新


0
投票

解决了Laravel / Homestead(流浪汉Windows)

1)编辑Homestead.yaml并将内存从2048增加到4096

流浪汉

3)流浪汉ssh

4)在您选择的文件夹上使用此行安装Symfony(必须没有文件)

COMPOSER_MEMORY_LIMIT=-1 composer create-project symfony/website-skeleton . -s dev
© www.soinside.com 2019 - 2024. All rights reserved.