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

composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle

HWIOAuthBundle github: https://github.com/hwi/HWIOAuthBundle

当我试图运行作曲家要求,我得到了内存错误。

Using version ^0.6.0@dev for hwi/oauth-bundle Using version ^1.2@dev for php-http/guzzle6-adapter Using version ^1.10@dev for php-http/httplug-bundle ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) PHP Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 67108864 bytes) in phar:///usr/local/Cellar/composer/1.4.2/libexec/composer.phar/src/Composer/DependencyResolver/Solver.php on line 220 Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 67108864 bytes) in phar:///usr/local/Cellar/composer/1.4.2/libexec/composer.phar/src/Composer/DependencyResolver/Solver.php on line 220

我尝试在我的php.ini文件中设置内存限制为2G,但没有工作。我找到我的php.ini通过运行php -i | grep php.ini


要获取当前的memory_limit值,运行:

php -r "echo ini_get('memory_limit').PHP_EOL;"

尝试增加php.ini文件中的限制(例如/etc/php5/cli/php.ini对于debian类系统):

; Use -1 for unlimited or define an explicit value like 2G
memory_limit = -1

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

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

或者是:

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

只需设置memory_limit,指定编写器的完整路由。Phar文件和更新,在我的情况下使用命令:

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

Here is another way to solve this problem under windows, if you use Wampserver. Indeed at the level of wampserver, there are two php.ini files, that of PHP, which one can find in the location C: \ wamp64 \ bin \ php \ phpx.xx \ php.ini and that of Apache , which can be found at location C: \ wamp64 \ bin \ apache \ apachex.xx \ bin \ php.ini. Both of these files have the memory_limit parameter. So to be sure to solve this problem, it is better to set the memory_limit = -1 parameter in both files at once.


最近发现,Composer在具有大量历史标记的包上消耗了大量CPU +内存。看到作曲家/作曲家# 7577

这个问题的解决方法是使用symfony/flex或https://github.com/rubenrua/symfony-clean-tags-composer-plugin

composer global require rubenrua/symfony-clean-tags-composer-plugin

手册中的另一个解决方案:

Composer也尊重由componer_memory_limit环境变量定义的内存限制:

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

或者在我的案例中

export COMPOSER_MEMORY_LIMIT=-1
composer <...>

在我的情况下,当我得到这个错误时,我试图要求这个包。

你可以像这样运行,你不需要更新PHP INI文件:

COMPOSER_MEMORY_LIMIT=-1 composer require huddledigital/zendesk-laravel

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

如果像我一样,由于某种原因,尽管您的计算机是64位的,但您使用的是32位的PHP,这将总是限制分配给Composer的内存数量。我是这样解决问题的:

在你的电脑上安装一个64位的php版本(比如在C:/php64中) 在composer中(在我的例子中使用cygwin)运行:

C:/php64/php.exe ../作曲家。phar更新


Windows 10;

后藤C: \ ProgramData ComposerSetup \ bin

编辑:composer.bat并在最后一行添加memory_limit=-1,如下所示。

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

问题解决了;)


在你的PHP目录中找到PHP .ini,如果xampp在xampp/PHP中 和内部php.ini文件更新内存限制:512M到2048M


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

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


只是想分享一下我在这件事上的情况。

问题背景:

在一个流浪的盒子里运行作曲家。 在尝试运行composer require " laravell -doctrine/orm:~1.4.13"后得到此消息:

致命错误:在phar:///usr/local/bin/composer/src/ composer/ DependencyResolver/RuleWatchGraph.php第52行中,允许的内存大小为1610612736字节已耗尽(试图分配4096字节) 有关如何处理内存不足错误的更多信息,请访问https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors。

已尝试将php.ini内存限制设置为-1。(仍然没有工作)。

解决方案:

显然是我的作曲家。Json和composer。洛克有一些问题。 运行$ composer validate,结果是: “锁文件不符合composer的最新更改。Json,建议您运行composer update。 所以我运行$ composer update,所有依赖项都被解析了。依我之见,当依赖关系出现问题时,可能是树的构建不同步,因此出现内存不足的问题。

希望这对大家有所帮助。


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.

Set memory_limit to -1 works for me;) (vim /etc/php/7.2/cli/php.ini)


由于之前的答案都不包括set,所以我花了一点时间来弄清楚如何在Windows中做到这一点而不改变php.ini,但下面是对我有效的方法:

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

我使用php7.2,大小默认设置为memory_limit = 512M。 要增加大小,需要定位php.ini。

在Wamp中,它位于C:\wamp64\bin\php\php7.2.23\php.ini。请注意PHP版本,因为它是名称文件夹,在我的情况下,我有php7.2.23

在Laragon中,它位于C:\ Laragon \bin\php\php-7.2.23- win32 - vc15 -x64\php.ini中。

如果您不想允许无限的空间,您可以设置任何您方便的大小,在我的例子中,我使用memory_limit = 2G

如果希望允许无限空间,可以更改为memory_limit = -1


要覆盖这个问题并在您的本地计算机上修复这个问题,您可以在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

我们想要更改的文件是Loaded Configuration。

打开并搜索memory_limit,可以将memory_limit = -1设置为PHP进程提供无限的内存,也可以设置512MB、1G、2G、5G、.... $ nano /usr/local/etc/php/7.3/php.ini

定位和设置:

$ memory_limit = -1 or memory_limit = 1G

保存文件后,您可以通过运行这个命令来验证PHP的更改,该命令将在您的PHP .ini文件中输出当前内存设置: php -r "echo ini_get('memory_limit').PHP_EOL;"

注意: 保存后,新的内存将工作。你不需要做任何其他事情。

更多信息:https://support.acquia.com/hc/en-us/articles/360036102614-Overriding-memory-limits-during-local-development-with-Composer


以防你得到一个作曲家错误:

无法打开输入文件:composer

run:

php -d memory_limit=-1 /usr/local/bin/composer require ...

我在这里将有用且被接受的答案压缩或打包成可重用(zsh)别名/函数,以便更快更容易记住重用:

# composer high-memory
composermem() {
  php -r "echo ini_get('memory_limit').PHP_EOL;"
}
alias composerbig='COMPOSER_MEMORY_LIMIT=-1 composer $1'

(php作曲家。Phar已经在系统上别名为composer)。


苹果笔记本电脑: 执行命令sudo nano ~/。bash_profile编辑bash_profile,然后在该文件中添加别名composer="COMPOSER_MEMORY_LIMIT=-1 composer",然后保存并退出。

希望这样能解决问题;编码快乐!


运行composer dump-autoload为我解决了这个问题。


有时问题出在作曲家的内存限制上。在我的情况下,我尝试增加php内存限制,但仍然得到错误。 您可以使用COMPOSER_MEMORY_LIMIT=-1来解决这个问题。 把它用作前缀:

COMPOSER_MEMORY_LIMIT=-1 composer require the/library

以后还得再加上前缀。

希望这能有所帮助。


对于macOS Catalina和macOS Big Sur中的此错误,请使用以下代码行:

PHP -d memory_limit=-1 /usr/local/bin/composer update——no-plugins

我用这句话来更新Symfony 5。这个命令也适用于laravel 7。


跳过内存限制和版本错误使用下面的代码:

COMPOSER_MEMORY_LIMIT=-1 composer require <package-name> --ignore-platform-reqs

Mac php 7.4

run

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

如果解析了额外的.ini文件: Memory_limit需要在

/usr/local/etc/php/7.4/conf.d/php-memory-limits.ini

正如Jose Seie所写,设置内存为

memory_limit = -1 or memory_limit = 1G

窗户呢?

我用的是Windows 10,这个命令对我来说很管用,

php -d memory_limit=-1 "C:\ProgramData\ComposerSetup\bin\composer.phar" update

在Windows xampp我只是改变:

;memory_limit=512M 

在php.ini中:

memory_limit =-1

然后通过xampp重新启动Apache

结果如下:

; Maximum amount of memory a script may consume
; http://php.net/memory-limit
memory_limit =-1
;memory_limit=512M

我使用命令COMPOSER_MEMORY_LIMIT=-1解决了这个问题

示例:COMPOSER_MEMORY_LIMIT=-1 composer requires larval/ui


Composer 2.0预览版现已发布:https://github.com/composer/composer/releases 修正了我的问题。你可以用composer self-update来设置预览

编辑:Composer 2与内存调优发布


我已经绕过了Homestead Laravel(流浪)虚拟机运行composer命令之前的COMPOSER_MEMORY_LIMIT=-1的问题:

例子

要更新Composer:

COMPOSER_MEMORY_LIMIT=-1 composer update

安装软件包:

COMPOSER_MEMORY_LIMIT=-1 composer require spatie/laravel-translatable

同样的问题,没有任何与“memory_limit”相关的工作,但是..

composer self-update --2

..解决了我的问题。(升级:1.10.17 -> 2.0.4)


在我的例子中:

Windows 10和Docker Desktop工作:

docker-compose -f .docker/docker-compose.yml exec php env COMPOSER_MEMORY_LIMIT=-1 composer require fideloper/proxy


你只需要增加“php.ini”文件的内存限制来解决这个问题

在php.ini文件中找到“memory_limit”。

只需将memory_limit值更改为2G,如下所示

;http://php.net/memory-limit
memory_limit=2G

使用以下命令重新定位PHP文件。

php --ini

在我的例子中,我丢失了一个交换分区。更多信息:https://github.com/composer/composer/issues/7348#issuecomment-414178276


Centos 7使用:

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

实际上,如果你设置内存限制为-1(无限),它应该工作。 例如:

php -d memory_limit=-1 /usr/local/bin/composer update
/usr/bin/php7.1 -d memory_limit=-1 /usr/local/bin/composer update

如果增加内存限制没有帮助或您没有太多内存

在另一台高内存的机器上

将composer的内存限制设置为-1 删除作曲家。锁文件 运行composer install 提交作曲家。锁定文件到您的回购 然后在服务器上运行composer install

这个想法是在计算/创建composer时使用了大部分内存。锁文件,如果它的创建/就绪- composer安装将不会使用太多内存。


这个页面上的选项对我有用

https://www.jesusamieiro.com/php-fatal-error-allowed-memory-size-of-1610612736-bytes-exhausted/

更精确地说,解决方案一:

COMPOSER_MEMORY_LIMIT=-1作曲家更新


对我来说,这适用于共享托管。

COMPOSER_MEMORY_LIMIT=-1 composer update

在我的例子中,我的作曲家版本是1。X是回溯日期的。 版本升级到2后。X它按预期工作。


在我的情况下,我试图安装Laravel框架没有说明xampp服务器(或apache服务器)在我的windows系统,我得到以下错误

致命错误:允许的1610612736字节内存耗尽

当我启动xampp服务器(或apache服务器)时,它就开始安装laravel框架,错误就消失了。

所以有时候你必须检查这个,否则它会比平时花费更长的时间,消耗更多的内存,结果大小会被耗尽。