作曲家在更新时被杀

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

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

我已经在互联网上寻找问题,看到的内存是问题,我认为我没有足够的内存可用,我已经检查了这一点,我有大约411兆空闲。 作曲家真的需要更多的内存吗?

194195 次浏览

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

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

  1. 在本地环境中运行 composer update(比如直接在物理笔记本电脑/台式机上,或者在笔记本电脑/台式机上运行 docker 容器/VM) ,这样内存限制就不会那么严重。
  2. 上传或者 git push comper.lock 文件。
  3. 在活动服务器上运行 composer install

然后,composer install将从。锁文件,每次获取完全相同的版本,而不是查找每个包的最新版本。这使您的应用程序不太可能崩溃,作曲家使用更少的内存。

阅读更多: https://getcomposer.org/doc/01-basic-usage.md#installing-with-composer-lock

或者,您也可以将整个 vendor目录上传到服务器,而根本不需要运行 composer install,但是您可以运行 应该

不幸的是,作曲家需要大量的 RAM 和处理能力。下面是我做的一些事情,它们结合在一起,使这个过程变得可以忍受。这是在我的云计算游戏笔环境。

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

如果你像我一样,正在使用一些内存不足的微虚拟机,创建一个交换文件可以解决这个问题:

#Check free memory before
free -m


mkdir -p /var/_swap_
cd /var/_swap_


#Here, 2G ~ 2GB of swap memory. Feel free to add MORE
sudo fallocate -l 2G swapfile


chmod 600 swapfile
mkswap swapfile
swapon swapfile
#Automatically mount this swap partition at startup
echo "/var/_swap_/swapfile none swap sw 0 0" >> /etc/fstab


#Check free memory after
free -m

正如一些评论指出的那样,如果您不作为 root 用户工作,那么使用 别忘了加上 sudo

顺便说一句,请随意为文件选择另一个位置/文件名/大小。
/var可能不是最好的地方,但是我不知道哪个地方是最好的,也很少关心,因为小型服务器主要用于测试目的。

您可以尝试在 Composer 配置中将 preferred-install设置为 "dist"

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

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

增加作曲家的内存限制

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

Php-d memory _ limit = 5G poser.phar update

我在一个本地 Docker 环境中得到了这个错误,我通过重新启动 Docker 解决了这个问题。

在 Laravel/宅地(流浪窗口)解决

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

  2. 流浪汉

  3. 流浪汉

  4. 在您选择的文件夹中安装 Symfony,并在其中添加以下代码行(必须没有文件)

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

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

我得到这个问题造成的包不正确更新通配符,我直接使用最后的版本,它最终工作。

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

当我在 PHP DOCKER 容器中运行 composer install时,出现了这个错误, 是记忆问题。 通过将 DOCKER 偏好中的 SWAP 内存从512 MB 增加到1.5 GB 解决了这个问题

要做到这一点:

Docker-> 偏好-> 资源

enter image description here

如果使用 docker,可以使用 COMPOSER _ Process _ Timeout

environment:
COMPOSER_MEMORY_LIMIT: -1
COMPOSER_PROCESS_TIMEOUT: 2000 #seconds

此外,在大型项目 composer需要更多的内存超过2 GB,您可以检查与 ps -aux,而它正在运行。 您将不得不手动添加它内部多克选项,没有其他任何帮助。

enter image description here

以下是我在 Laravel 框架中成功安装 maat 网站 excel 包的方法:

  1. 我从我的远程服务器下载 作曲家 Json文件和 作曲家,锁定文件。
  2. 我从本地命令提示符运行 composer update(然后等到所有安装过程完成)。
  3. 作曲家,锁定文件上传到远程服务器。
  4. 在远程服务器上运行 composer install(然后等待所有进程完成)。
  5. 搞定

作曲家2更新减少了内存使用

composer self-update
composer update
composer require xxx

修正了 AWS ec2 Ubuntu Server PHP 内存值升级 Magento 2.3. X 的问题

  • Php 7.2/7.3
  • Nginx
  • Ubuntu
  • 作曲家1. X
  • MariaDB
  • Magento 2.3. X

错误: 更新依赖项(包括 request-dev) 被杀了 为了

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

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

使用“种子”命令“根据服务器需要进行更改” 在我的案例中 >/etc/php/7.2/fpm/php.ini

内存限制类型为“3.5 G”或“3500 MB” 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

玩得开心

I was facing this same issue on my ec2 instance, following steps worked for me :

  1. 将 poser.lock 文件从本地环境复制到 ec2。
  2. 然后运行 sudo composer install并简单地安装我的项目的所有依赖项。

我解决了在我的 ubuntu 服务器上维护以下步骤的问题,希望对你有用。

  • 停止我的阿帕奇服务器

    sudo service apache2 stop

  • 运行作曲家更新

    sudo composer update

  • 启动我的 Apache 服务器

    sudo service apache2 start

我用的是:

  • 虚拟盒子
  • 4096GB 内存
  • 2个 CPU
  • 10GB 硬盘(500MB 交换)
  • Ubuntu 20.04

跑步:

  • 在幼虫8项目文件夹中的 composer update

我没有为虚拟机设置交换空间,所以 Virtualbox 创建了一个500Mb 的交换空间,这足够 没有了。

所以 作曲家使用了4Gb 的内存和交换机。

我给虚拟机更多的交换空间,然后它工作了。

如下图所示,作曲家使用了我所有的 RAM + 2 GB 的交换空间

系统监察