코드를 컴파일 할 때 Magento 2 허용 메모리 소진 오류


28

모듈을 추가 할 때 오류가 발생했습니다 ..

Magento 컴파일 명령을 다시 실행하십시오

그래서 아래 명령을 실행하지만 루트에서 명령을 실행할 때 아래에 오류가 표시됩니다.

PHP 마 젠토 설정 : 디 : 컴파일

Compilation was started.
%message% 0/7 [>---------------------------]   0% 1 sec 37.0 MiB%message% 0/7 [>
---------------------------]   0% 1 sec 37.0 MiBProxies code generation... 0/7 [
>---------------------------]   0% 1 sec 37.0 MiB
Proxies code generation... 1/7 [====>-----------------------]  14% 47 secs 43.5
MiB
Repositories code generation... 1/7 [====>-----------------------]  14% 47 secs
43.5 MiB
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate
 24 bytes) in D:\xampp\htdocs\linsenwelt\vendor\zendframework\zend-code\src\Scan
ner\FileScanner.php on line 36

어떻게 고치는 지 ?


라이브 서버에서 동일한 오류가 발생합니다
SIBHI S

답변:


72

Magento 2 명령의 메모리 제한에 대한 빠른 해결책은 명령 내에 메모리 제한을 직접 추가하는 것입니다.

컴파일 명령의 경우

php -dmemory_limit=5G bin/magento setup:di:compile

배포 용

php -dmemory_limit=5G bin/magento setup:static-content:deploy

문제가 해결되지 않으면 5G에 따라 최대로 변경할 수 있습니다.


1
@rakesh 감사합니다 그것은 내 시간을 절약 다시 한번 감사합니다
Nagaraju K

1
메모리 제한을 늘리는 것은 일시적인 해결책 일 수 있습니다.
Macas

8

cli에 128MB의 메모리 만 할당 된 것 같습니다. 가능하면 값을 최소 256MB 또는 512MB로 늘리십시오.


내 php.ini 파일에 512MB 크기를 시도했지만 여전히 작동하지 않습니다 ... 어떻게 해결합니까?
Khushbu Mehta

여전히 얻는 Allowed memory size of 134217728 bytes다면 cli에 대한 메모리 제한을 늘리지 않았습니다.
Marius

어느 파일에서 메모리 제한을 설정 했습니까 ??
Khushbu Mehta

8

이 '더러운'방법을 사용하십시오

php -dmemory_limit=-1 bin/magento setup:di:compile


5

PHP> = 5.3.0을 사용하고 Magento 2.1.x 이상을 사용한 경우을 실행하면 composer install루트 디렉토리와 pub 디렉토리에 두 개의 파일이 생성됩니다..user.ini

PHP.ini 설정을 무시하도록 해당 파일을 편집하십시오.이 경우 memory_limit

; Set PHP memory limit to 768M which already enough for compilation tasks
memory_limit = 768M
max_execution_time = 18000

Apache를 사용하는 /pub경우 engineX (nginx)를 사용하는 경우 루트 디렉토리 내부의 파일 만 관리해야 하며 그 반대의 경우도 마찬가지입니다.

도움이 되길 바랍니다.


3

PHP에 할당 된 메모리를 늘려야합니다. 메모리를 늘리려면 command를 실행하십시오 php --ini. 찾기는 php.ini를로드했습니다. 그것은 같아야

Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File:         /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed:      /etc/php5/cli/conf.d/05-opcache.ini,

현재로드 된 php.ini (/etc/php5/cli/php.ini)로 이동하여 memory_limit 매개 변수를 찾으십시오. memory_limit 매개 변수의 값을 256M 또는 512M으로 늘리십시오.


3

이 상황은 방금 수행하기 때문에 디버그하기 까다로울 수 있습니다

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

경로에 PHP의 메모리 제한이 표시됩니다. 그러나 magento 스크립트 (bin / magento)는 프리앰블을 사용합니다.

#!/usr/bin/env php

따라서 반드시 경로에서 PHP를 사용하는 것은 아닙니다! php.ini사용중인 파일 을 추적하는 한 가지 방법 은 다음과 같은 작은 스크립트를 작성하는 것입니다.

#!/usr/bin/env php
<?php
phpinfo();

그것을 호출하십시오 getinfo( getinfo.php! 아님), 실행 가능하게 만든 다음 다음과 같이 실행하십시오

./getinfo  | grep php.ini

변경해야 할 ini 파일이 표시됩니다. 해당 파일 memory_limit에서 다른 게시물에서 제안한 구성 값 을 128M보다 높은 값으로 변경하십시오 . 그런 다음 파일을 저장하고 작업을 확인하십시오.

./getinfo  | grep memory_limit

2

비슷한 문제가 발생했습니다 .php ini 파일에서 메모리 제한이 2Gb로 증가했으며 phpinfo () 파일이 2Gb로 설정되었음을 보여줍니다. Magento가 메모리 제한을 수동으로 설정 한 것 같습니다. 파일 저장소 / 마 젠토 내에서 메모리 제한을 늘 렸습니다. 첫 번째 줄에 나는 이것을 넣었다.

ini_set('memory_limit', '656M');

그것이 작동하게 만들었습니다.


2

내 질문에 대한 해결책이 있습니다. 메모리 소진 오류의 경우 컴파일 코드에 대한 메모리 제한을 추가해야합니다.

php -dmemory_limit=4G bin/magento setup:di:compile

앞으로 누군가를 도울 수 있기를 바랍니다.


0

php/bin magento -d memory_limit=5G s:d:c 컴파일 코드 다음 줄을 사용하십시오. 이것은 PHP에 허용되는 메모리 제한 때문입니다. 그러나 명령에서 메모리 제한을 허용하면 오류가 제거되고 컴파일 및 기타 명령이 오류없이 실행됩니다.
-d memory_limit=5G 위 예제에서 보듯 이 모든 명령 에 이것을 추가하십시오 . 내 대답이 유용하다고 생각되면 공감하십시오.


0

"-d memory_limit = 5G"를 사용한 컴파일은 현명한 결정이 아닙니다. 모드 전환 프로세스 중에 개발자에서 프로덕션으로 영향을받을 수있는 임시 솔루션입니다. 이번에는 시스템이 오류를 발생시키는이 논리 "-d memory_limit = 5G"없이 코드를 컴파일합니다.

이 단계에서이 오류를 해결하는 것이 더 좋습니다. 이 문제를 해결하려면 php.ini를 열고 memory_limit를 1024M 늘리고 컴파일 명령 php bin / magento setup : di : compile을 실행하십시오.

이것을 확인하십시오 : https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors

이번에는 작동합니다


0

Cli 에서이 문제에 직면하고 있다면이 명령을 트레이하십시오.

php -dmemory_limit = 8G bin / magento 설정 : 업그레이드


0

M2의 경우 아래 명령으로 ssh를 통해 메모리 제한을 추가하십시오.

컴파일 명령 : php -dmemory_limit=5G bin/magento setup:di:compile deploy 명령 : php -dmemory_limit=5G bin/magento setup:static-content:deploy

문제가 해결되지 않으면 5G 값을 늘릴 수 있습니다.


0

67

Magento 2 명령의 메모리 제한에 대한 빠른 해결책은 명령 내에 메모리 제한을 직접 추가하는 것입니다.

컴파일 명령의 경우

php -dmemory_limit = 5G bin / magento setup : di : compile 배포

php -dmemory_limit = 5G bin / magento setup : static-content : deploy 문제가 해결되지 않으면 5G에 따라 최대로 변경할 수 있습니다.

정말 작동합니다 :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.