我试图通过运行下面的命令将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
只是想分享一下我在这件事上的情况。
问题背景:
在一个流浪的盒子里运行作曲家。
在尝试运行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,所有依赖项都被解析了。依我之见,当依赖关系出现问题时,可能是树的构建不同步,因此出现内存不足的问题。
希望这对大家有所帮助。
要覆盖这个问题并在您的本地计算机上修复这个问题,您可以在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
要获取当前的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