作曲家在更新时被杀死

时间:2013-12-18 20:29:02

标签: php laravel laravel-4 composer-php

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

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

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

由于

20 个答案:

答案 0 :(得分:184)

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

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

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

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

    在此处阅读更多内容:https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file

答案 1 :(得分:36)

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

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

答案 2 :(得分:13)

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

答案 3 :(得分:8)

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

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

答案 4 :(得分:4)

我在PHP DOCKER容器中运行composer install时遇到此错误, 这是一个内存问题。 通过将DOCKER PREFERENCES中的SWAP内存从512MB增加到1.5GB

来解决

要这样做:

Docker->首选项->常规资源

enter image description here

答案 5 :(得分:3)

运行composer self-updatecomposer clearcache 删除供应商和composer.lock 重新启动本地环境,然后运行 php -d memory_limit=-1 /usr/local/bin/composer install

答案 6 :(得分: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

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

答案 7 :(得分:1)

您可以尝试类似

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

答案 8 :(得分:1)

如果您使用的是docker,则可以使用COMPOSER_PROCESS_TIMEOUT

environment:
  COMPOSER_MEMORY_LIMIT: -1
  COMPOSER_PROCESS_TIMEOUT: 2000 #seconds

答案 9 :(得分:1)

这是我从Laravel Framework中的composer成功安装maatwebsite \ excel软件包的方法:

  1. 我从远程服务器上下载了 composer.json 文件和 composer.lock 文件。
  2. 我从本地命令提示符运行composer update(然后等待所有安装过程完成)。
  3. composer.lock 文件上传到远程服务器。
  4. 在远程服务器上运行composer install(然后等待所有过程完成)。
  5. 完成

答案 10 :(得分:1)

composer 2更新减少了内存使用量

composer self-update
composer update
composer require xxx

答案 11 :(得分:0)

  

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

答案 12 :(得分:0)

我遇到这个问题,原因是该软件包无法使用通配符正确更新,我直接使用了最新版本,并且终于可以使用。

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

答案 13 :(得分:0)

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

答案 14 :(得分:0)

修复了适用于Magento 2.3.X的AWS ec2 Ubuntu服务器PHP内存值升级的问题

  • Php 7.2 / 7.3
  • nginx
  • ubuntu
  • 作曲者1.X
  • mariaDB
  • magento 2.3.X

错误:更新依赖关系(包括require-dev) 被杀

  1. Ram必须至少4GB
  2. 将实例类型更改为适当的或升级Ram
  3. Php内存值更改
  4. 服务器重启
  5. 尝试再次安装相同的软件包

PHP值更新 可能位于'/etc/php/7.2/fpm/php.ini'下 取决于您的服务器和PHP fpm X.XX版本

使用Seed命令“根据服务器要求进行更改” 就我的情况>> /etc/php/7.2/fpm/php.ini

内存限制类型为“ 3.5G”或“ 3500MB” Php 7.2.X

sudo sed -i "s/memory_limit = .*/memory_limit = 3.5G/" /etc/php/7.2/fpm/php.ini
  

Php 7.3.X

  sudo sed -i "s/memory_limit = .*/memory_limit = 3.5G/" /etc/php/7.3/fpm/php.ini

测试是否在'free -h'命令上应用

    free -h

再次安装软件包#

通过Composer安装扩展程序

转到您的Magento 2安装目录

cd /var/www/html/

具有“超级用户”权限

sudo su

开始安装

composer require XXXXXX/XXXXXXX

启用模块

php bin/magento module:enable XXXXXX/XXXXXXX


php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy
Restart
sudo reboot

Enjioy

答案 15 :(得分:0)

我在 ec2 实例上遇到了同样的问题,以下步骤对我有用:

  1. 将 composer.lock 文件从我的本地环境复制到 ec2。
  2. 然后运行 ​​sudo composer install 并且它只是为我的项目安装了所有依赖项。

答案 16 :(得分:0)

我通过在 ubuntu 服务器中维护以下步骤解决了这个问题。希望它对你有用。

  • 停止我的 apache 服务器

    sudo service apache2 stop

  • 运行作曲家更新

    sudo composer update

  • 启动我的apache服务器

    sudo service apache2 start

答案 17 :(得分:0)

您可以使用交换技术,这里有一篇关于如何更改交换文件大小的详细文章 link

答案 18 :(得分:-1)

我在本地码头环境中遇到此错误。我只需重启Docker就解决了。

答案 19 :(得分:-1)

已在Laravel / Homestead(流浪Windows)上解决

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

2)无所事事

3)流浪的ssh

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

COMPOSER_MEMORY_LIMIT=-1 composer create-project symfony/website-skeleton . -s dev