我试图通过运行下面的命令将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


当前回答

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

COMPOSER_MEMORY_LIMIT=-1 composer require the/library

以后还得再加上前缀。

希望这能有所帮助。

其他回答

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

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

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

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

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

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

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

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

或者在我的案例中

export COMPOSER_MEMORY_LIMIT=-1
composer <...>

窗户呢?

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

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

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

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

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

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