编写器需要的内存不足。PHP致命错误:允许的内存大小1610612736字节已用尽

编写器需要的内存不足。PHP致命错误:允许的内存大小1610612736字节已用尽,php,symfony,composer-php,Php,Symfony,Composer Php,我试图通过运行以下命令将HWIOAuthBundle添加到我的项目中 composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle php --ini HWIOAuthBundle github: 当我尝试运行composer require时,我遇到了内存不足错误 使用版本^0.6。0@dev用于使用版本^1的hwi/oauth捆绑包。2@dev 用于使用版本^1的php http/GU

我试图通过运行以下命令将HWIOAuthBundle添加到我的项目中

composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle
php --ini
HWIOAuthBundle github:

当我尝试运行composer require时,我遇到了内存不足错误

使用版本^0.6。0@dev用于使用版本^1的hwi/oauth捆绑包。2@dev 用于使用版本^1的php http/GUZULE6适配器。10@dev对于 php http/httplug bundle./composer.json已更新 具有包信息更新依赖项的composer存储库 (包括需要开发)

PHP致命错误:允许的内存大小1610612736字节已用尽 (尝试在中分配67108864字节) phar:///usr/local/Cellar/composer/1.4.2/libexec/composer.phar/src/Composer/DependencyResolver/Solver.php 在线220

致命错误:允许的内存大小1610612736字节已用尽(已尝试) 在中分配67108864字节) phar:///usr/local/Cellar/composer/1.4.2/libexec/composer.phar/src/Composer/DependencyResolver/Solver.php 在线220


我尝试在php.ini文件中将内存限制设置为2G,但没有成功。我通过运行
php-I | grep php.ini

找到我的php.ini要获取当前内存限制值,请运行:

php -r "echo ini_get('memory_limit').PHP_EOL;"
尝试增加
php.ini
文件中的限制(对于类似Debian的系统,例如
/etc/php5/cli/php.ini
):

或者,可以使用命令行参数增加限制:

php -d memory_limit=-1 composer.phar require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle
要获取加载的php.ini文件,请尝试:

php --ini
另一个快速解决方案:

php composer.phar COMPOSER_MEMORY_LIMIT=-1 require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle

只需设置
memory\u limit
指定composer.phar文件的完整路径,并使用以下命令进行更新:

php -d memory_limit=-1 C:/wamp64/composer.phar update

如果您使用Wampserver,下面是在windows下解决此问题的另一种方法。实际上,在wampserver级别,有两个php.ini文件,一个是php文件,可以在C:\wamp64\bin\php\phpx.xx\php.ini位置找到,另一个是Apache文件,可以在C:\wamp64\bin\apachex.xx\bin\php.ini位置找到。这两个文件都有memory_limit参数。因此,为了确保解决这个问题,最好在两个文件中同时设置memory\u limit=-1参数。

最近发现Composer在具有大量历史标记的包上消耗高CPU+内存。看

此问题的解决方法是使用
symfony/flex

另一个解决方案是:

Composer还遵守由
Composer\u memory\u limit
环境变量定义的内存限制:

COMPOSER_MEMORY_LIMIT=-1 composer.phar <...>

COMPOSER\u MEMORY\u LIMIT=-1 COMPOSER.phar
还是我的情况

export COMPOSER_MEMORY_LIMIT=-1
composer <...>
export COMPOSER\u MEMORY\u LIMIT=-1
作曲家

在我的例子中,我试图要求这样做,但我得到了
PHP致命错误:允许的内存大小为

我发现像这样运行很容易,您不必更新PHPINI文件


示例:
COMPOSER\u MEMORY\u LIMIT=-1个COMPOSER需要huddledigital/zendesk laravel

希望这能帮助别人

运行Composer时,可以使用特定的php版本

如果,像我一样,出于某种原因,您使用的是PHP 32位,即使您的计算机是64位的,这将始终限制分配给Composer的内存量。我这样解决了我的问题:

  • 在计算机上的某个位置安装64位php版本(比如C:/php64)
  • 在composer中(在我的示例中使用cygwin),运行:
COMPOSER\u MEMORY\u LIMIT=-1 C:/php64/php.exe../COMPOSER.phar update

在Windows 10上

转到
C:\ProgramData\Composer设置\bin

编辑:
composer.bat
并在最后一行添加
memory\u limit=-1
,如下所示

@echo OFF
:: in case DelayedExpansion is on and a path contains ! 
setlocal DISABLEDELAYEDEXPANSION
php -d memory_limit=-1 "%~dp0composer.phar" %*

问题已解决;)

在确保供应商文件夹存在之前,确保不需要软件包


检查您以前是否安装过
composer
。您可能只是将存储库克隆到您的计算机上。因此,在需要新的软件包之前,您必须先安装旧的软件包。或者您可能希望在composer命令中包含此选项
--profile
,以查看计时和内存使用信息。

只想分享一下我在这方面的情况

问题背景:

  • 在一个流浪的盒子里奔跑的作曲家
  • 在尝试运行composer require“laravel条令/orm:~1.4.13”后收到此消息:
  • 致命错误:中允许的内存大小1610612736字节已用尽(尝试分配4096字节)phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php 在线52 查看有关如何处理内存不足错误的更多信息

  • 已尝试将php.ini内存限制设置为-1。(仍不工作)
  • 解决方案:

  • 显然,我的composer.json和composer.lock有一些问题。 运行$composer验证,结果是: 锁文件不是composer.json中最新更改的最新版本,建议您运行
    composer update

  • 所以我运行了$composer更新,所有依赖项都得到了解决。Imho,当依赖项出现一些问题时,可能是树构建不同步,因此出现了内存不足的问题

  • 希望这对任何人都有帮助

    Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52 Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.
    

    将“内存限制”设置为-1对我有效;)(vim/etc/php/7.2/cli/php.ini)

    由于之前的答案中没有一个包含
    set
    ,我花了一点时间才弄明白如何在不更改php.ini的情况下在Windows中执行此操作,但以下是对我有效的方法:

    set COMPOSER_MEMORY_LIMIT=-1
    composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle
    

    要覆盖此选项并修复本地计算机上的问题,可以在
    php.ini
    配置文件中进行以下更改

  • 要定位
    php.ini
    配置文件,可以使用以下命令:
    php--ini
  • 运行此命令后,您应该会看到如下输出:

    Configuration File (php.ini) Path: /usr/local/etc/php/7.3
    Loaded Configuration File:         /usr/local/etc/php/7.3/php.ini <---- note the path
    Scan for additional .ini files in: /usr/local/etc/php/7.3/conf.d
    Additional .ini files parsed:      /usr/local/etc/php/7.3/conf.d/ext-opcache.ini
    
  • 保存您的
    Configuration File (php.ini) Path: /usr/local/etc/php/7.3
    Loaded Configuration File:         /usr/local/etc/php/7.3/php.ini <---- note the path
    Scan for additional .ini files in: /usr/local/etc/php/7.3/conf.d
    Additional .ini files parsed:      /usr/local/etc/php/7.3/conf.d/ext-opcache.ini
    
    $ memory_limit = -1 or memory_limit = 1G
    
    php -d memory_limit=-1 /usr/local/bin/composer require ...
    
    # composer high-memory
    composermem() {
      php -r "echo ini_get('memory_limit').PHP_EOL;"
    }
    alias composerbig='COMPOSER_MEMORY_LIMIT=-1 composer $1'
    
    COMPOSER_MEMORY_LIMIT=-1 composer require the/library
    
    COMPOSER_MEMORY_LIMIT=-1 composer require <package-name> --ignore-platform-reqs
    
    php --ini
    
    Configuration File (php.ini) Path: /usr/local/etc/php/7.4
    Loaded Configuration File:         /usr/local/etc/php/7.4/php.ini
    Scan for additional .ini files in: /usr/local/etc/php/7.4/conf.d
    Additional .ini files parsed:      /usr/local/etc/php/7.4/conf.d/ext-opcache.ini,
    /usr/local/etc/php/7.4/conf.d/php-memory-limits.ini
    
    /usr/local/etc/php/7.4/conf.d/php-memory-limits.ini
    
    memory_limit = -1 or memory_limit = 1G
    
    php -d memory_limit=-1 "C:\ProgramData\ComposerSetup\bin\composer.phar" update
    
    ;memory_limit=512M 
    
    memory_limit =-1
    
    ; Maximum amount of memory a script may consume
    ; http://php.net/memory-limit
    memory_limit =-1
    ;memory_limit=512M
    
    COMPOSER_MEMORY_LIMIT=-1 composer update
    
    COMPOSER_MEMORY_LIMIT=-1 composer require spatie/laravel-translatable
    
    composer self-update --2
    
    docker-compose -f .docker/docker-compose.yml exec php env COMPOSER_MEMORY_LIMIT=-1 composer require fideloper/proxy
    
    
    ;http://php.net/memory-limit
    memory_limit=2G
    
    php --ini
    
    COMPOSER_MEMORY_LIMIT=-1 composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle