我正在尝试通过运行以下命令将HWIOAuthBundle添加到我的项目中。
composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle
HWIOAuthBundle github:https://github.com/hwi/HWIOAuthBundle
当我尝试运行composer时,我遇到内存不足错误。
将版本^0.6.0@dev用于hwi / oauth-bundle使用版本^1.2@dev 对于php-http / guzzle6-adapter使用版本^ 1.10@dev php-http / httplug-bundle ./composer.json已更新Loading 具有包信息的composer存储库更新依赖项 (包括require-dev)
PHP致命错误:允许的内存大小为1610612736字节 (试图分配67108864字节) 第220行的phar:///usr/local/Cellar/composer/1.4.2/libexec/composer.phar/src/Composer/DependencyResolver/Solver.php
致命错误:允许的内存大小为1610612736字节耗尽(尝试过 在中分配67108864个字节) 第220行的phar:///usr/local/Cellar/composer/1.4.2/libexec/composer.phar/src/Composer/DependencyResolver/Solver.php
我尝试在我的php.ini文件中将memory_limit设置为2G但是没有用。我通过运行php -i | grep php.ini
答案 0 :(得分:30)
要获取当前的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
答案 1 :(得分:28)
由于先前的答案均未包含set
,因此我花了点时间弄清楚如何在Windows中完成此操作而不更改php.ini,但这对我有用:
set COMPOSER_MEMORY_LIMIT=-1
composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle
答案 2 :(得分:19)
同样的问题,与“ memory_limit”有关的任何东西都没有起作用,但是..
composer self-update --2
..解决了我的问题。 (升级:1.10.17-> 2.0.4)
答案 3 :(得分:17)
以防万一您遇到作曲家错误:
无法打开输入文件:作曲家
运行:
php -d memory_limit=-1 /usr/local/bin/composer require ...
答案 4 :(得分:15)
要跳过内存限制和版本错误,请使用以下代码:
COMPOSER_MEMORY_LIMIT=-1 composer require <package-name> --ignore-platform-reqs
答案 5 :(得分:13)
对于macOS Catalina和macOS Big Sur中的此错误,请使用以下行:
php -d memory_limit=-1 /usr/local/bin/composer update --no-plugins
我使用这一行在Symfony 5上进行更新。此命令也适用于laravel 7。
答案 6 :(得分:12)
我在Homestead Laravel(无用)虚拟机中绕过了问题,该虚拟机运行以COMPOSER_MEMORY_LIMIT=-1
开头的composer命令:
示例
要更新Composer:
COMPOSER_MEMORY_LIMIT=-1 composer update
要安装软件包:
COMPOSER_MEMORY_LIMIT=-1 composer require spatie/laravel-translatable
答案 7 :(得分:11)
有时问题出在作曲家的内存限制中。就我而言,我尝试增加php内存限制,但仍然收到错误。
您可以使用COMPOSER_MEMORY_LIMIT=-1
来解决此问题。
将其用作前缀:
COMPOSER_MEMORY_LIMIT=-1 composer require the/library
您将来必须再次添加前缀。
希望这会有所帮助。
答案 8 :(得分:9)
关于Windows?
我使用Windows 10,并且此命令对我有用,
php -d memory_limit=-1 "C:\ProgramData\ComposerSetup\bin\composer.phar" update
答案 9 :(得分:8)
Composer 2.0预览现已可用:https://github.com/composer/composer/releases
已解决我的问题。您可以使用composer self-update --preview
编辑:发布了具有内存调整功能的Composer 2
答案 10 :(得分:6)
只需设置memory_limit
,以指定composer.phar文件的完整路径并使用以下命令进行更新:
php -d memory_limit=-1 C:/wamp64/composer.phar update
答案 11 :(得分:5)
在我的情况下,我尝试要求使用此package,而我却获得了PHP Fatal error: Allowed memory size of
。
我发现这样运行很容易,您不必更新PHP INI文件。
示例:COMPOSER_MEMORY_LIMIT=-1 composer require huddledigital/zendesk-laravel
希望这对某人有所帮助。
答案 12 :(得分:3)
只想分享我在这件事上的情况。
问题上下文:
致命错误:在第52行的phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php中,耗尽了1610612736字节(尝试分配4096字节)的允许内存大小 检查https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors,了解有关如何处理内存不足错误的更多信息。
解决方案:
显然我的composer.json和composer.lock有一些问题。
冉$作曲家验证,结果是:
“锁定文件不是最新的composer.json更新,建议您运行composer update
。”
所以我运行了$ composer更新,所有的依赖关系都解决了。恕我直言,当依赖项出现问题时,树的构建可能会不同步,从而导致内存不足的问题。
希望这可以帮助任何人。
答案 13 :(得分:3)
在Mac php 7.4上
运行
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
答案 14 :(得分:3)
在xampp的Windows中,我刚更改过:
;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
答案 15 :(得分:3)
Centos 7 使用:
COMPOSER_MEMORY_LIMIT=-1 composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle
答案 16 :(得分:2)
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.
将 memory_limit 设置为 -1 对我有用;)(vim /etc/php/7.2/cli/php.ini)
答案 17 :(得分:2)
要覆盖此问题并解决本地计算机上的问题,您可以在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
我们要更改的文件是已加载的配置。
打开并搜索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;”
注意: 保存后,新的内存将可用。您无需执行其他任何操作。
答案 18 :(得分:2)
对于Macbook:
运行命令sudo nano ~/.bash_profile
编辑bash_profile,然后在该文件中添加alias composer="COMPOSER_MEMORY_LIMIT=-1 composer"
,然后保存并退出。
希望这可以解决问题;编码愉快!
答案 19 :(得分:2)
最近发现,Composer在具有很多历史标签的软件包上消耗大量CPU +内存。参见composer/composer#7577
此问题的解决方法是使用symfony/flex
或https://github.com/rubenrua/symfony-clean-tags-composer-plugin
composer global require rubenrua/symfony-clean-tags-composer-plugin
答案 20 :(得分:1)
我在这里将有用的和可接受的答案压缩或打包为可重用(zsh)别名/函数,以便更快,更容易记住:
# composer high-memory
composermem() {
php -r "echo ini_get('memory_limit').PHP_EOL;"
}
alias composerbig='COMPOSER_MEMORY_LIMIT=-1 composer $1'
({php composer.phar
在系统上已经别名为composer
)。
答案 21 :(得分:1)
manual中的另一种解决方案:
Composer还遵守COMPOSER_MEMORY_LIMIT
环境变量定义的内存限制:
COMPOSER_MEMORY_LIMIT=-1 composer.phar <...>
或者就我而言
export COMPOSER_MEMORY_LIMIT=-1
composer <...>
答案 22 :(得分:0)
在确保供应商文件夹存在之前,请确保不需要软件包。
检查您之前是否完成过composer install
。您可能只是将存储库克隆到了计算机。因此,您必须先安装旧软件包,然后再安装新软件包。或者,您可能希望将此选项--profile
包含在composer命令中,以查看时间和内存使用信息。
答案 23 :(得分:0)
在xampp的PHP目录中找到php.ini,以防出现在xampp / PHP中 并在php.ini文件中将memory_limit:512M更新为2048M
答案 24 :(得分:0)
我使用此命令COMPOSER_MEMORY_LIMIT = -1
解决了此问题示例:COMPOSER_MEMORY_LIMIT = -1作曲家需要幼虫/ ui
答案 25 :(得分:0)
在Windows 10上;
转到C:\ ProgramData \ ComposerSetup \ bin
编辑:composer.bat
@echo OFF
:: in case DelayedExpansion is on and a path contains !
setlocal DISABLEDELAYEDEXPANSION
php -d memory_limit=-1 "%~dp0composer.phar" %*
问题解决了;)
答案 26 :(得分:0)
运行 Composer
时,您可以使用特定的php版本
如果像我一样,由于某种原因,即使您的计算机是64位,也使用的是 PHP 32位,这将始终限制分配给Composer的内存量。我这样解决了我的问题:
COMPOSER_MEMORY_LIMIT=-1 C:/php64/php.exe ../composer.phar update
答案 27 :(得分:0)
您只需要增加“php.ini”文件的内存限制即可解决问题
在 php.ini 文件中找到“memory_limit”。
只需将 memory_limit 值更改为 2G,如下所示
;http://php.net/memory-limit
memory_limit=2G
使用以下命令重新定位 php 文件。
php --ini
答案 28 :(得分:0)
就我而言,我缺少交换分区。更多信息:https://github.com/composer/composer/issues/7348#issuecomment-414178276
答案 29 :(得分:0)
如果使用Wampserver,这是在Windows下解决此问题的另一种方法。实际上,在wampserver级别,有两个 php.ini 文件,即PHP文件,可以在 C位置找到一个文件:\ wamp64 \ bin \ php \ phpx.xx \ php.ini 以及Apache的Apache,可以在以下位置找到 C:\ wamp64 \ bin \ apache \ apachex.xx \ bin \ php.ini 。这两个文件都具有memory_limit参数。因此,为确保解决此问题,最好一次在两个文件中都设置 memory_limit = -1 参数。
答案 30 :(得分:0)
实际上,如果您将内存限制设置为 -1(无限制),它应该可以工作。 例如:
php -d memory_limit=-1 /usr/local/bin/composer update
/usr/bin/php7.1 -d memory_limit=-1 /usr/local/bin/composer update
答案 31 :(得分:-1)
运行composer dump-autoload
为我解决了这个问题。
答案 32 :(得分:-1)
我正在使用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