我正在尝试通过运行以下命令将 HWIOAuthBundle 添加到我的项目中。
composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle
HWIOAuthBundle github:https://github.com/hwi/HWIOAuthBundle
当我尝试运行 composer require 时,出现内存不足错误。
使用版本 ^0.6.0@dev 用于 hwi/oauth-bundle 使用版本 ^1.2@dev 用于 php-http/guzzle6-adapter 使用版本 ^1.10@dev 用于 php-http/httplug-bundle ./composer.json 已更新使用包信息加载作曲家存储库更新依赖项(包括 require-dev)PHP 致命错误:在 phar:///usr/local/Cellar/composer/1.4.2/ 中耗尽允许的内存大小为 1610612736 字节(尝试分配 67108864 字节)第 220 行的 libexec/composer.phar/src/Composer/DependencyResolver/Solver.php 致命错误:phar:///usr/local/Cellar/composer/1.4 中允许的内存大小为 1610612736 字节已用尽(尝试分配 67108864 字节) .2/libexec/composer.phar/src/Composer/DependencyResolver/Solver.php 在第 220 行
我尝试在我的 php.ini 文件中将 memory_limit 设置为 2G,但没有奏效。我通过运行 php -i | grep php.ini
找到了我的 php.ini
composer self-update --rollback
。我在使用 v.1.9.3 时开始遇到内存耗尽的问题,当我回滚到 1.8.6 时它停止了。
composer require
可以使用超过 1.5G 的内存是相当疯狂的吗?当我第一次看到这个时,我认为这一定是作曲家的一个错误。将内存限制设置为 -1 确实对我有用……但是 1.5G 到底怎么不够?作曲家真的需要这么多吗?
要获取当前 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
就我而言,当我遇到此错误时,我试图要求 this package。
你可以这样运行,而且你不必更新 PHP INI 文件:
COMPOSER_MEMORY_LIMIT=-1 composer require huddledigital/zendesk-laravel
COMPOSER_MEMORY_LIMIT=-1
放在 composer require xyz
之前使其工作(接受的答案没有)。
COMPOSER_MEMORY_LIMIT=-1 composer require guzzlehttp/guzzle
manual 的另一个解决方案:
Composer 还遵守由 COMPOSER_MEMORY_LIMIT
环境变量定义的内存限制:
COMPOSER_MEMORY_LIMIT=-1 composer.phar <...>
或者在我的情况下
export COMPOSER_MEMORY_LIMIT=-1
composer <...>
~/.bash_profile
以添加 alias composer="COMPOSER_MEMORY_LIMIT=-1 composer"
并为我解决了这个问题。请务必在更改后获取文件或重新启动终端
同样的问题,与“memory_limit”相关的任何东西都不起作用,但是..
composer self-update --2
..解决了我的问题。 (升级:1.10.17 -> 2.0.4)
composer self-update --2
- 没有工作并且发生了错误。 composer self-update --stable
完成了工作 :)
composer self-update --stable
然后 composer update
工作。
在 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" %*
问题解决了 ;)
composer.bat
的位置不必总是 C:\ProgramData\ComposerSetup\bin
,但我猜这是默认位置。但是,如果有人想找到 composer.bat
的位置,只需运行 where
命令:如 where composer
。这将显示确切的位置。
由于之前的答案都没有包含 set
,因此我花了一些时间才弄清楚如何在不更改 php.ini 的情况下在 Windows 中执行此操作,但这对我有用:
set COMPOSER_MEMORY_LIMIT=-1
composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle
我已经绕过了 Homestead Laravel (vagrant) 虚拟机中的问题,该虚拟机运行以 COMPOSER_MEMORY_LIMIT=-1
开头的 composer 命令:
例子
更新作曲家:
COMPOSER_MEMORY_LIMIT=-1 composer update
要安装软件包:
COMPOSER_MEMORY_LIMIT=-1 composer require spatie/laravel-translatable
对于 macOS Catalina 和 macOS Big Sur 中的此错误,请使用以下行:
php -d memory_limit=-1 /usr/local/bin/composer update --no-plugins
我使用这一行来更新 Symfony 5。这个命令也适用于 laravel 7。
只需设置 memory_limit
指定 composer.phar 文件的完整路径并更新,在我的例子中使用命令:
php -d memory_limit=-1 C:/wamp64/composer.phar update
COMPOSER_MEMORY_LIMIT=-1 composer.phar update
也有效。请参阅:getcomposer.org/doc/articles/…
php -d memory_limit=-1 /usr/bin/composer update
有时问题出在作曲家内存限制中。就我而言,我尝试增加 php 内存限制,但仍然出现错误。您可以使用 COMPOSER_MEMORY_LIMIT=-1
来解决这个问题。使用它作为前缀:
COMPOSER_MEMORY_LIMIT=-1 composer require the/library
您必须在将来再次添加前缀。
希望这可以帮助。
最近发现 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
以防万一您遇到作曲家错误:
无法打开输入文件:作曲家
跑:
php -d memory_limit=-1 /usr/local/bin/composer require ...
要跳过内存限制和版本错误,请使用以下代码:
COMPOSER_MEMORY_LIMIT=-1 composer require <package-name> --ignore-platform-reqs
窗户呢?
我使用 Windows 10,这个命令对我有用,
php -d memory_limit=-1 "C:\ProgramData\ComposerSetup\bin\composer.phar" update
Composer 2.0 预览版现已推出:https://github.com/composer/composer/releases 为我解决了问题。您可以使用 composer self-update --preview
设置预览
编辑:发布了内存调整的 Composer 2
运行 Composer 时可以使用特定的 php 版本
如果像我一样,出于某种原因,即使您的计算机是 64 位,您也使用 PHP 32 位,这将始终限制分配给 Composer 的内存量。我这样解决了我的问题:
在您的计算机某处安装 64 位 php 版本(假设在 C:/php64 中)
在作曲家(在我的例子中使用 cygwin),运行:
COMPOSER_MEMORY_LIMIT=-1 C:/php64/php.exe ../composer.phar update
在 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
在 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
只是想分享一下我在这件事上的情况。
问题背景:
在流浪者的盒子里运行作曲家。尝试运行 composer require "laravel-doctrine/orm:~1.4.13" 后收到此消息:
致命错误:第 52 行 phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php 中允许的内存大小为 1610612736 字节已用尽(尝试分配 4096 字节)检查 https://getcomposer。 org/doc/articles/troubleshooting.md#memory-limit-errors 以获取有关如何处理内存不足错误的更多信息。
已尝试将 php.ini 内存限制设置为 -1。 (还是行不通)。
解决方案:
显然我的 composer.json 和 composer.lock 有一些问题。跑$composer validate,结果是:“锁文件没有更新composer.json最新的变化,建议你运行composer update。”所以我运行了 $ composer update,所有的依赖都解决了。恕我直言,当依赖项出现问题时,可能是树构建不同步,因此出现内存不足的问题。
希望这可以帮助那里的任何人。
要覆盖这一点并在本地计算机上解决问题,您可以在 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
我们要更改的文件是 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;"
注意:保存后,新内存将正常工作。你不需要做任何其他事情。
对于 Centos 7 使用:
COMPOSER_MEMORY_LIMIT=-1 composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle
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)
对于 Macbook:运行命令 sudo nano ~/.bash_profile
以编辑 bash_profile,然后在该文件中添加 alias composer="COMPOSER_MEMORY_LIMIT=-1 composer"
,然后保存并退出。
希望这能解决问题;快乐编码!
我在这里将有用且被接受的答案浓缩或打包成可重用(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
)。
我使用这个命令 COMPOSER_MEMORY_LIMIT=-1 解决了这个问题
示例:COMPOSER_MEMORY_LIMIT=-1 作曲家需要 larval/ui
对我来说,这适用于共享主机。
COMPOSER_MEMORY_LIMIT=-1 composer update
在我的情况下,我尝试在我的 Windows 系统中安装 Laravel framework 而不说明 xampp 服务器 (或 apache 服务器),但出现以下错误
致命错误:允许的内存大小为 1610612736 字节已用尽
一旦我启动 xampp 服务器(或 apache 服务器),它就开始安装 laravel 框架并且错误消失了。
所以实际上有时你必须检查这个,否则它会比平时花费更长的时间并消耗更多的内存,结果大小会被耗尽。
在确保供应商文件夹存在之前,请确保不需要包。
检查您之前是否做过composer install
。您可能只是将存储库克隆到您的机器上。因此,您必须在需要新软件包之前安装旧软件包。或者您可能希望将此选项 --profile
包含在您的 composer 命令中以查看时间和内存使用信息。
就我而言:
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
不定期副业成功案例分享
php --ini
!在 php 7.4 中,您有一个不同的 php ini 文件 (php-cli.ini) 用于 clidphp -d memory_limit=-1 composer.phar install
对我有用。谢谢!SET COMPOSER_MEMORY_LIMIT=-1