Composer에 메모리 부족이 필요합니다. PHP 치명적인 오류 : 1610612736 바이트의 허용 된 메모리 크기가 소진되었습니다.


258

아래 명령을 실행하여 HWIOAuthBundle을 프로젝트에 추가하려고합니다.

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

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

composer를 실행하려고 할 때 메모리 부족 오류가 발생합니다.

hwi / oauth-bundle에 ^0.6.0@dev 버전 사용 php-http / guzzle6-adapter에 ^1.2@dev 버전 사용 php-http / httplug-bundle ./composer.json에 ^1.10@dev 버전 사용이 업데이트되었습니다. 패키지 정보와 함께 작성기 저장소로드 종속성 업데이트 (Require-dev 포함)

PHP 치명적인 오류 : phar : ///usr/local/Cellar/composer/1.4.2/libexec/composer.phar/src/Composer/DependencyResolver/Solver에서 1610612736 바이트의 허용 메모리 크기가 소진되었습니다 (67108864 바이트 할당 시도). 220 라인의 PHP

치명적인 오류 : phar : ///usr/local/Cellar/composer/1.4.2/libexec/composer.phar/src/Composer/DependencyResolver/Solver.php에서 허용 된 메모리 크기 1610612736 바이트가 소진되었습니다 (67108864 바이트 할당 시도). 220 행

php.ini 파일에서 memory_limit를 2G로 설정하려고했지만 작동하지 않았습니다. 실행하여 내 php.ini를 찾았습니다.php -i | grep php.ini


3
최근에 작곡가 자체 업데이트를 하셨나요? 오류 메시지의 1.4.2가 버전 1.4.2를 나타내지 만 최신 버전의 composer가 1.6.2인지 확실하지 않습니다. 그리고 얼마나 많은 물리적 메모리가 있습니까? VM 또는 클라우드 서버입니까?
Cerad

예 @Cerad - 내가 전에 작곡가의 자동 업데이트를했고, 내 작곡가 버전은 1.6.2이다
브라이언 첸

@Cerad이 내 로컬 컴퓨터에 있고 나는 확실히 메모리가 충분해야한다
브라이언 첸

이전에 Composer가 제대로 실행 된 프로젝트에서이 문제가 발생하면 composer self-update --rollback. v.1.9.3에서 메모리 고갈에 빠지기 시작했는데 1.8.6으로 롤백했을 때 중지되었습니다.
karolus

달리기 composer require가 1.5G 이상의 메모리를 사용할 수 있다는 사실이 미친 짓이라고 생각하는 사람이 아무도 없습니까? 이것을 처음 보았을 때 나는 그것이 작곡가의 버그라고 생각했습니다. 메모리 제한을 -1로 설정하면 효과가 있었지만 어떻게 1.5G로 충분하지 않습니까? 작곡가가 정말 많이 필요할까요?
Daniel Howard

답변:


386

현재 memory_limit 값을 얻으려면 다음을 실행하십시오.

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

php.ini파일 의 제한을 늘리십시오 (예 /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

34
COMPOSER_MEMORY_LIMIT = -1 작곡가 업데이트도 나에게 적합합니다.
Kishan Patel

1
명령 주셔서 감사합니다 php --ini! PHP 7.4에서는 CLID에 대해 다른 PHP ini 파일 (PHP-cli.ini)가
빈센트 Decaux

4
사용하는 php -d memory_limit=-1 composer.phar install날 위해 일했습니다. 감사!
Tomasz Kuter

1
memory_limit = -1 좋은 해결책입니까? 메모리 소비 제한을 제거하고 모두 사용할 수있는 것처럼 보입니다.
kamote ulalo

2
Windows에서 사용SET COMPOSER_MEMORY_LIMIT=-1
빈센트 Decaux

299

제 경우에는이 패키지 를 요구하려고 했는데 PHP Fatal error: Allowed memory size of.

이렇게 실행하기 쉬우 며 PHP INI 파일을 업데이트 할 필요가 없습니다.

예: COMPOSER_MEMORY_LIMIT=-1 composer require huddledigital/zendesk-laravel

이것이 누군가를 돕기를 바랍니다.


또한 도움이되었습니다. 내 PHP 제한은 128MB 였지만 오류 메시지는 PHP 작성기 제한이 1,5GB (이 특정 경우에 다른 곳에서 구성됨을 의미 함)라고 표시했습니다. 그래서 php.ini의 수정은 도움이되지 않았지만이 대답은 도움이되었습니다.

84

설명서의 또 다른 해결책 :

Composer는 COMPOSER_MEMORY_LIMIT환경 변수로 정의 된 메모리 제한도 준수 합니다.

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

또는 내 경우에는

export COMPOSER_MEMORY_LIMIT=-1
composer <...>

13
Mac에서 나는 ~/.bash_profile추가하기 위해 편집 했고 alias composer="COMPOSER_MEMORY_LIMIT=-1 composer"그것은 나를 위해 해결했습니다. 변경 후 파일을 소스 또는 터미널을 다시 시작해야합니다
nicholas.alipaz

46

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" %*

문제 해결됨 ;)


4
나에게 가장 좋은 것은 거의 모든 것이 나에게 적합하지 않았습니다.
krachleur

1
또한 .bat 확장자없이 작성기 파일 을 업데이트해야했습니다 (동일한 -d memory_limit = -1 추가).
Maulik Gangani

Windows에서는 위치 composer.batC:\ProgramData\ComposerSetup\bin항상 필요한 것은 아니지만 이것이 기본 위치라고 생각합니다. 그러나 누군가의 위치를 ​​찾으려면 composer.bat다음 where명령 을 실행해야합니다 . like where composer. 정확한 위치가 표시됩니다.
rineez

30

이전 답변에 포함되지 않았기 때문에 setphp.ini를 변경하지 않고 Windows에서 수행하는 방법을 알아내는 데 약간의 시간이 걸렸지 만 다음은 저에게 효과적이었습니다.

set COMPOSER_MEMORY_LIMIT=-1
composer require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle

1
이것은 Windows 환경에 대한 최상의 답변입니다. 감사합니다 :)
sykez

27

같은 문제, "memory_limit"와 관련된 어떤 것도 작동하지 않았지만 ..

composer self-update --2

.. 내 문제를 해결했습니다. (업그레이드 : 1.10.17-> 2.0.4)


5
그들을 위해 composer self-update --2-작동하지 않았고 오류가 발생했습니다. composer self-update --stable작업 : 한
WebMan

23

그냥 설정 memory_limit명령 내 경우에, 당신의 composer.phar 파일 및 업데이트의 전체 경로를 지정 :

php -d memory_limit=-1 C:/wamp64/composer.phar update

6
또한 COMPOSER_MEMORY_LIMIT=-1 composer.phar update작동합니다. 참조 : getcomposer.org/doc/articles/…
mayid

5
우분투는 이것을 사용에php -d memory_limit=-1 /usr/bin/composer update
몰래

COMPOSER_MEMORY_LIMIT = -1 작곡가도 저를 위해 일합니다 .. @mayid 감사합니다. : +1
Kishan Patel

20

최근 Composer가 많은 히스토리 태그가있는 패키지에서 높은 CPU + 메모리를 소비하는 것으로 확인되었습니다. 참조 # 7577 작곡가 / 작곡가

이 문제에 대한 해결 방법은 symfony/flex또는 https://github.com/rubenrua/symfony-clean-tags-composer-plugin을 사용하는 것입니다.

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

1
플러그인을 전역 적으로 설치해야합니까? 할 일이 더 있습니까? 이 플러그인이 실제로 무엇을하는지 설명해 주시겠습니까? 그러한 경우 작곡가의 메모리 사용량을 줄입니까?
rineez

17

다음과 같은 작성기 오류가 발생하는 경우를 대비하여

입력 파일을 열 수 없습니다 : composer

운영:

php -d memory_limit=-1 /usr/local/bin/composer require ...

15

메모리 제한 및 버전 오류를 건너 뛰려면 아래 코드를 사용하십시오.

COMPOSER_MEMORY_LIMIT=-1 composer require <package-name> --ignore-platform-reqs

15

나는 다음과 같은 작곡가 명령을 실행하는 Homestead Laravel (vagrant) 가상 머신의 문제를 우회했습니다 COMPOSER_MEMORY_LIMIT=-1.

Composer를 업데이트하려면 :

COMPOSER_MEMORY_LIMIT=-1 composer update

패키지를 설치하려면 :

COMPOSER_MEMORY_LIMIT=-1 composer require spatie/laravel-translatable

고마워 친구! 전체적으로 업데이트됩니까 아니면 특정 명령에 대해서만 업데이트됩니까?
andcl

1
특정 명령에 대한 임시 솔루션입니다.
Davide Casiraghi

15

macOS Catalina 및 macOS Big Sur의이 오류에 대해 다음 줄을 사용하십시오.

php -d memory_limit=-1 /usr/local/bin/composer update --no-plugins

이 줄을 사용하여 Symfony 5에서 업데이트했습니다.이 명령은 laravel 7에서도 작동했습니다.


11

때때로 문제는 작곡가 메모리 제한에 있습니다. 제 경우에는 PHP 메모리 제한을 늘리려 고 시도했지만 여전히 오류가 발생했습니다. 그것을 COMPOSER_MEMORY_LIMIT=-1우회하는 데 사용할 수 있습니다 . 접두사로 사용 :

COMPOSER_MEMORY_LIMIT=-1 composer require the/library

나중에 다시 접두사를 붙여야합니다.

도움이 되었기를 바랍니다.


9

창문은 어때?

나는 Windows 10을 사용 하고이 명령은 나를 위해 일했습니다.

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


5

Composer를 실행할 때 특정 PHP 버전을 사용할 수 있습니다.

나처럼 어떤 이유로 컴퓨터가 64 비트인데도 PHP 32 비트를 사용한다면 이것은 항상 Composer에 할당되는 메모리의 양을 제한 할 것입니다. 이 방법으로 문제를 해결했습니다.

  • 컴퓨터 어딘가에 64 비트 PHP 버전을 설치합니다 (C : / php64라고 가정 해 보겠습니다).
  • 작곡가에서 (제 경우에는 cygwin 사용) 다음을 실행하십시오.

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


이 제안은 저에게 효과적이었습니다! 감사. 새 64 비트 버전을 전역 적으로 사용하려면 시스템 환경 변수도 업데이트해야합니다.
GentleGiant

3

이 문제에 대한 내 상황을 공유하고 싶습니다.

문제 컨텍스트 :

  1. 방랑자 상자에서 작곡가를 실행합니다.
  2. 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 를 참조하십시오.

  1. php.ini 메모리 제한을 -1로 설정하려고했습니다. (그래도 작동이 안되는).

해결책:

  1. 분명히 내 composer.json 및 composer.lock에는 몇 가지 문제가 있습니다. $ composer validate를 실행하면 "잠금 파일이 composer.json의 최신 변경 사항으로 최신 상태가 아닙니다 composer update. 를 실행하는 것이 좋습니다 ."

  2. 그래서 $ composer 업데이트를 실행했고 모든 종속성이 해결되었습니다. Imho, 종속성에 몇 가지 문제가 있으면 트리 구축이 동기화되지 않아 메모리 부족 문제 일 수 있습니다.

이것이 누구에게나 도움이되기를 바랍니다.


3

이를 재정의하고 로컬 컴퓨터의 문제를 수정하려면 php.ini구성 파일 에서 다음 변경을 수행 할 수 있습니다 .

  1. 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 입니다.

  1. 열기 및 검색 memory_limit 사용자가 설정할 수 있습니다 memory_limit = -1PHP 프로세스에 메모리를 무제한 제공하거나 사용자가 설정할 수512MB, 1G, 2G, 5G,....

    $ nano /usr/local/etc/php/7.3/php.ini

찾기 및 설정 :

$ memory_limit = -1 or memory_limit = 1G
  1. 파일을 저장 한 후 다음 명령을 실행하여 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


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

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

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)


2

Macbook의 경우 : 명령 sudo nano ~/.bash_profile을 실행 하여 bash_profile을 편집 한 다음 추가alias composer="COMPOSER_MEMORY_LIMIT=-1 composer" 해당 파일 한 다음 저장하고 종료합니다.

이것이 문제를 해결할 수 있기를 바랍니다. 즐거운 코딩 되세요!


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시스템에서로 별칭이 지정되었습니다 ).


1

이 명령을 사용하여이 문제를 해결했습니다 COMPOSER_MEMORY_LIMIT = -1

예 : COMPOSER_MEMORY_LIMIT = -1 composer에는 larval / ui가 필요합니다.


0

공급 업체 폴더가 있는지 확인하기 전에 패키지가 필요하지 않은지 확인하십시오.

composer install전에 한 적이 있는지 확인하십시오 . 저장소를 컴퓨터에 복제했을 수 있습니다. 따라서 새 패키지를 요구하기 전에 이전 패키지를 설치해야합니다. 또는이 옵션 --profile을 composer 명령에 포함하여 타이밍 및 메모리 사용량 정보를 볼 수 있습니다.


0

나의 경우에는:

Windows 10 및 Docker Desktop 작동 :

docker-compose -f .docker/docker-compose.yml exec php env COMPOSER_MEMORY_LIMIT=-1 composer require fideloper/proxy


-1

Wampserver를 사용하는 경우 Windows에서이 문제를 해결하는 또 다른 방법이 있습니다. 실제로 wampserver 수준에는 두 개의 php.ini 파일이 있습니다. 하나는 C : \ wamp64 \ bin \ php \ phpx.xx \ php.ini 위치에서 찾을 수 있습니다. 위치 C : \ wamp64 \ bin \ apache \ apachex.xx \ bin \ php.ini에 있습니다. 이 두 파일 모두 memory_limit 매개 변수가 있습니다. 따라서이 문제를 확실히 해결하려면 두 파일 모두에서 한 번에 memory_limit = -1 매개 변수 를 설정하는 것이 좋습니다 .


1
memory_limit웹 서버에 대한 설정은 Composer 실행에 영향을 미치지 않습니다. 또한 memory_limit = -1전역 적으로 사용 하는 것은 실행중인 모든 PHP 프로세스를 메모리 고갈로 열기 때문에 마지막 옵션이어야합니다. 필요할 때만 설정하는 것이 좋습니다. 시작 프로세스에 직접 연결
Nico Haase

-1

php7.2를 사용하고 있으며 크기는 memory_limit = 512M기본적으로 설정되어 있습니다. 크기를 늘리려면 php.ini.

에서는 Wamp에 있습니다 C:\wamp64\bin\php\php7.2.23\php.ini. 내 경우에는 이름 폴더이므로 PHP 버전을 조심하십시오.php7.2.23

에서는 내 경우 LaragonC:\laragon\bin\php\php-7.2.23-Win32-VC15-x64\php.ini같이 위치 합니다.

무제한 공간을 허용하지 않으려면 자신에게 편리한 크기를 설정할 수 있습니다. 제 경우에는 memory_limit = 2G

무제한 공간을 허용하려면 다음으로 변경할 수 있습니다. memory_limit = -1



-2

xampp의 경우 PHP 디렉토리 내부에서 php.ini를 찾으십시오. xampp / PHP 내부 및 php.ini 파일 업데이트 memory_limit : 512M ~ 2048M


당신의 대답에 좀 더 설명을 추가하세요 - 자신이 설정 한 OP 상태 memory_limit에 이미 2G에
니코 하세
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.