【问题标题】:Composer update trouble作曲家更新麻烦
【发布时间】:2014-09-10 20:26:12
【问题描述】:

我正在使用 laravel + composer 。我正在加载方式/生成器包,当我运行 composer update 给我这个错误:

使用包信息加载作曲家存储库更新 依赖项(包括require-dev)

致命错误:允许的内存大小为 536870912 字节已用尽(已尝试 分配 67108864 字节)在 phar:///usr/local/Cellar/composer/1.0.0-alpha8/libexec/composer.phar/src/Composer/DependencyResolver/Solver.php 在第 170 行

【问题讨论】:

    标签: laravel composer-php


    【解决方案1】:

    我想,这是因为 composer update 已经使用了所有的内存。

    php -d memory_limit=1G /usr/local/Cellar/composer/1.0.0-alpha8/libexec/composer.phar update
    

    这适用于我在 Mac 上。

    还可以使用 composer install。

    【讨论】:

    • 我可以确认这在 CentOS 5.6 虚拟机上也适用于我。
    【解决方案2】:

    在我的情况下,我遇到了同样的问题,并通过停止 Apache 和 MySQL 服务,然后通过 composer 继续安装 laravel 应用程序来解决。

    sudo service stop apache2 后跟 sudo service stop mysql stop 这反过来又杀死了正在消耗内存的应用程序,然后我通过正常的 composer 命令继续安装 Laravel,一旦完成,我就重新启动了服务,一切都很好。

    【讨论】:

    • 没有其他解决方案,但这对我有用。我不知道我的记忆中发生了什么,但似乎 apache 和 mysql 正在消耗大量内存,以至于交换和内存都已满。停止效果很好。
    • @steven 您当前运行的服务器的规格可能会增加 RAM 大小可能会解决您的问题
    【解决方案3】:

    如果您使用的服务器内存较少(例如 512MB),则需要创建交换内存。这是您在 ubuntu 上的操作方法

    touch swap.img
    chmod 600 swap.img
    

    使用 1GB 进行交换

    dd if=/dev/zero of=/var/swap.img bs=1024k count=1000
    mkswap /var/swap.img
    swapon /var/swap.img
    

    这里是全文https://www.digitalocean.com/community/tutorials/how-to-configure-virtual-memory-swap-file-on-a-vps

    【讨论】:

      【解决方案4】:

      你有最新版本的作曲家吗?我通过一个简单的更新解决了这个问题:

      sudo composer self-update
      

      【讨论】:

        【解决方案5】:

        我找到了解决办法,看完这篇文章:https://github.com/composer/composer/issues/1898

        感谢“Dynom,2013 年 7 月 4 日发表评论”

        包管理器需要 512MiB RAM 已经有点多,但我 也超过它。有趣的是我超过了 512 MiB RAM (up 根据我的过程输出,大约 800 MiB RAM)当我使用我的 私有 Satis 存储库(实际上只是一个缓存 Github 公共存储库)。否则我不会超过它。刚过 添加我的 satis 存储库后,composer 消耗了近 400 MiB 的 RAM

        对于在全球范围内提高 PHP CLI memory_limit 的所有其他人,我 建议不要这样做。相反,我建议将它放在命令中 行,像这样:

        php -dmemory_limit=1G {composer location} update 
        

        例子:

        php -dmemory_limit=1G bin/composer.phar update
        

        否则你可能会错过某些与记忆相关的意外记忆 在你自己的工作中表现出来。

        测试于:Debian 版本 6

        【讨论】:

        • 不仅适用于update 命令。当然,如果你的内存有问题,你需要使用php -dmemory_limit前缀。
        【解决方案6】:

        我在使用 composer 安装 laravel 时遇到问题。 原来的命令是:

        composer global require "laravel/installer=~1.1"
        

        错误信息是:

        Loading composer repositories with package information Updating dependencies (including require-dev)
        
        Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 67108864 bytes) in phar:///usr/local/Cellar/composer/1.0.0-alpha8/libexec/composer.phar/src/Composer/DependencyResolver/Solver.php on line 170
        

        以下命令应该可以工作:

        php -dmemory_limit=1G /usr/local/Cellar/composer/1.0.0-alpha8/libexec/composer.phar global require "laravel/installer=~1.1"
        

        【讨论】:

          猜你喜欢
          • 2016-04-09
          • 2015-12-01
          • 2015-09-11
          • 2014-09-07
          • 2016-09-06
          • 2013-06-15
          • 2021-08-07
          • 2021-12-16
          • 2020-05-11
          相关资源
          最近更新 更多