【问题标题】:Composer killed while updating更新时作曲家被杀
【发布时间】:2014-01-07 04:46:29
【问题描述】:

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

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

我在 Internet 上查找了问题,发现内存是问题,我认为我没有足够的 RAM 可用,我检查了这个我有大约 411mb 可用空间。 composer 真的需要更多内存吗?

【问题讨论】:

    标签: php laravel laravel-4 composer-php


    【解决方案1】:

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

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

    1. 在内存限制不那么严重的本地环境中运行composer update(例如直接在您的物理笔记本电脑/台式机上,或在您的笔记本电脑/台式机上运行的 docker 容器/VM)。
    2. 上传或git pushcomposer.lock 文件。
    3. 在实时服务器上运行composer install

    composer install 然后将从 .lock 文件中读取,每次都获取完全相同的版本,而不是查找每个包的最新版本。这会降低您的应用崩溃的可能性,并且 composer 使用更少的内存。

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

    或者,您可以将整个vendor 目录上传到服务器,完全无需运行composer install,但您应该运行composer dump-autoload --optimize

    【讨论】:

    • 当我上传 composer.lock 并运行 composer install 时。谢谢!
    • 这对我不起作用,composer 是 apt 的安装程序,所以我将其删除并手动安装,然后一切正常。
    • 我在本地机器上遇到了这个问题。
    • 对于本地开发,请务必使用@Balmipor's Answer,或任何其他具有少量内存的服务器。
    • Andreas,通过 php.ini 的内存限制解决
    【解决方案2】:

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

    #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
    

    正如几位 cmets 指出的那样,如果您不是以 root 身份工作,请不要忘记添加 sudo

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

    【讨论】:

    • 返回swapon: swapfile: swapon failed: Operation not permitted,为什么?
    • @Muhammad Dyas Yaskur 如果您没有权限问题(请确保以 root 身份工作或使用 sudo),您的配置中是否还有其他特殊内容(操作系统、驱动器类型等) ?
    • @Balmipour 我已经以 root 身份使用但仍然不允许,我的操作系统是 centos 7.0。 [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
    • 最好在 root 模型中运行 thosw 命令。 ```须藤苏```
    • @Balmipour 我使用 Laravel Homestead 盒子 * Homestead v10.12.0, v11.0.2 * Settler v9.5.1 (Ubuntu 18.04) * Settler v10.0.0 (Ubuntu 20.04) 如果我完成了我会感谢"sudo su" 那么它可以在没有 sudo 的情况下工作。
    【解决方案3】:

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

    1. 您可能只是用完了 RAM。启用交换:https://www.digitalocean.com/community/search?q=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 对我来说仍然很慢......

    【讨论】:

    • 我把top换成了htop,更方便了。
    • 还要考虑创建交换文件
    • 在停止 mysql 服务后,它对我有用。谢谢@alirobe
    【解决方案4】:

    不需要额外内存的 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
    

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

    【讨论】:

      【解决方案5】:

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

      这样做:

      Docker -> 首选项 -> Rousources

      【讨论】:

      • 将我的 Swap 从 1GB 增加到 2GB 并且成功了!
      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

        增加作曲家的内存限制

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

        【讨论】:

          【解决方案8】:

          如果你使用 docker,你可以使用COMPOSER_PROCESS_TIMEOUT

          environment:
            COMPOSER_MEMORY_LIMIT: -1
            COMPOSER_PROCESS_TIMEOUT: 2000 #seconds
          

          同样在大型项目中composer 需要超过 2GB 的 RAM,您可以在运行时使用 ps -aux 进行检查。 您必须在 docker 选项中手动添加它,没有其他帮助。

          【讨论】:

            【解决方案9】:

            以下是我在 Laravel 框架中从 composer 成功安装 maatwebsite\excel 包的方法:

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

            【讨论】:

              【解决方案10】:

              composer 2 更新减少了内存使用

              composer self-update
              composer update
              composer require xxx
              

              【讨论】:

                【解决方案11】:

                针对 Magento 2.3.X 的 AWS ec2 Ubuntu Server Php 内存值升级修复

                • PHP 7.2 / 7.3
                • nginx
                • ubuntu
                • 作曲家 1.X
                • mariaDB
                • magento 2.3.X

                错误:更新依赖项(包括 require-dev) 被杀 对于

                1. 内存必须至少 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
                

                Install-Package Again#

                通过 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
                

                开心

                【讨论】:

                  【解决方案12】:

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

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

                  【讨论】:

                    【解决方案13】:

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

                    • 停止我的 apache 服务器

                      sudo service apache2 stop

                    • 运行作曲家更新

                      sudo composer update

                    • 启动我的 apache 服务器

                      sudo service apache2 start

                    【讨论】:

                      【解决方案14】:

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

                      【讨论】:

                      • 请在您的代码中添加一些解释,以便其他人可以从中学习
                      • 请说明此代码的作用和应用位置...@Ali
                      【解决方案15】:

                      我得到这个问题是由于一个没有用通配符正确更新的包,我直接使用最后一个版本,它终于可以工作了。

                      "l3/cas-bundle": "~1.0" -------> "l3/cas-bundle": "1.1.13"

                      【讨论】:

                        【解决方案16】:

                        已在 Laravel/Homestead (Vagrant Windows) 上解决

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

                        2. 流浪

                        3. 流浪的ssh

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

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

                        【讨论】:

                          【解决方案17】:

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

                          【讨论】:

                          • 这个问题是关于安装一些 Laravel 项目的。你的答案与它有什么关系?
                          • 这个问题是关于安装一个包的。具体来说,它是关于安装与 RAM 相关的软件包的问题。为什么我在 2 年前的答案中包含有关 WP 的信息?我不知道。我现在更新了答案,IMO 现在非常相关。
                          【解决方案18】:

                          我在本地 Docker 环境中收到此错误。我通过简单地重新启动 Docker 解决了它。

                          【讨论】:

                            猜你喜欢
                            • 2013-07-23
                            • 2013-06-04
                            • 1970-01-01
                            • 2015-09-11
                            • 2021-08-07
                            • 1970-01-01
                            • 2015-12-01
                            • 2019-02-01
                            • 2019-02-23
                            相关资源
                            最近更新 更多