编写器要求内存不足。PHP致命错误:允许的内存大小为1610612736字节耗尽

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

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

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

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

hwi/oauth-bundle使用版本^0.6.0@dev 使用^1.10@dev版本的guzzle6-adapter php-http / httplug-bundle。/作曲家。json已更新加载 带有包信息的composer存储库更新依赖项 (包括require-dev) < / p > 致命错误:允许的内存大小为1610612736字节耗尽 (尝试分配67108864字节) phr:///usr/local/Cellar/composer/1.4.2/libexec/composer.phar/src/ composer/ DependencyResolver/Solver.php on line 220

.php

致命错误:允许的内存大小为1610612736字节已耗尽(已尝试 分配67108864字节) phr:///usr/local/Cellar/composer/1.4.2/libexec/composer.phar/src/ composer/ DependencyResolver/Solver.php on line 220

.php

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

546529 次浏览

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

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

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

; 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

这里有另一种方法来解决这个问题在windows下,如果你使用Wampserver。实际上,在wampserver级别,有两个< em > . ini < / em >文件,一个是PHP文件,可以在C: \ wamp64 \ bin \ php \ phpx。Xx \ php.ini位置找到,另一个是Apache文件,可以在C: \ wamp64 \ bin \ apache \ apachex。Xx \ bin \ php.ini位置找到。这两个文件都有memory_limit参数。所以为了确保解决这个问题,最好在两个文件中同时设置memory_limit = -1参数。

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

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

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

手册的另一个解决方案:

Composer也尊重由COMPOSER_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

你可以在运行作曲家时使用特定php版本

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

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

COMPOSER_MEMORY_LIMIT=-1 C:/php64/php.exe ../composer.phar update

Windows 10;

Goto 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文件内部更新memory_limit:512M到2048M

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

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

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

问题背景:

  1. 在一个流浪的盒子里运行作曲家。
  2. 在尝试运行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
  1. 已尝试将php.ini内存限制设置为-1。(仍然没有工作)。

解决方案:

  1. 显然我的作曲家。Json和composer。洛克有一些问题。 运行$ composer validate,结果是: “锁文件不符合composer的最新更改。. json,建议运行composer update。李" < / p > < / >

  2. 所以我运行$ 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 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.

. 0

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配置文件中进行以下更改。

  1. 要定位您的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

我们想要更改的文件是加载配置

  1. 打开并搜索memory_limit,你可以设置memory_limit = -1为PHP进程提供无限的内存,或者你可以设置512MB, 1G, 2G, 5G,....

    $ nano /usr/local/etc/php/7.3/php.ini < / p >

定位和设置:

$ memory_limit = -1 or memory_limit = 1G
  1. 保存文件后,你可以通过运行这个命令来验证PHP的变化,它将在你的php.ini文件中输出当前的内存设置:

    php -r "echo ini_get('memory_limit').PHP_EOL;"< / p >

< p >注意: 保存后,新的内存将工作。

.

.

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

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

无法打开输入文件:composer

运行:

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 composer.phar已经别名为composer)。

Macbook的< p >: 运行命令sudo nano ~/.bash_profile编辑bash_profile,然后在该文件中添加alias 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

运行

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 --preview

来设置预览

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

我已经在Homestead Laravel(流浪者)虚拟机中绕过了这个问题,运行了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”的内存限制;文件解决问题

找到&;memory_limit&;在php.ini文件中。

只需将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(无限),它应该工作。 如:< / p >
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.lock文件时使用了大部分内存,如果它的created/ready - composer安装将不会使用太多内存。

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

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

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

 COMPOSER_MEMORY_LIMIT=-1 composer update

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

COMPOSER_MEMORY_LIMIT=-1 composer update
在我的例子中,我的作曲家版本是1。X是回溯日期的。 版本升级到2后。

. X它按预期工作

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

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

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

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