Memória esgotada do Magento 2 esgotou erro ao compilar código


28

Tenho erro quando adiciono o módulo ..

Por favor, execute novamente o comando de compilação Magento

então eu corro abaixo do comando, mas também exibo o erro abaixo quando executar o comando a partir da raiz,

instalação do php magento: di: compile

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

Como consertar ?


Estou recebendo o mesmo erro no servidor ao vivo
SIBHI S

Respostas:


72

Uma solução rápida para o limite de memória no comando Magento 2 é adicionar diretamente o limite de memória dentro do comando.

Para o comando de compilação,

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

Para implantação

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

Você pode alterar de acordo com 5G para máximo se o problema não for resolvido.


11
graças @rakesh ele economiza meu tempo muito obrigado mais uma vez
Nagaraju K

11
Tenha cuidado, aumentar o limite de memória pode ser apenas uma solução temporária.
Macas

8

Parece que seu CLI possui apenas 128 MB de memória alocada. Aumente o valor para pelo menos 256 MB ou 512 MB, se puder.


Eu tentei o tamanho de 512mb para o meu arquivo php.ini, mas ainda não funcionou ... como resolver?
Khushbu Mehta

Se você ainda receber Allowed memory size of 134217728 bytes, não aumentou o limite de memória para o CLI.
Marius

Em qual arquivo eu defini o limite de memória ??
Khushbu Mehta

8

use esse caminho 'sujo'

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


5

Se você estiver usando PHP> = 5.3.0 e usou o Magento 2.1.xe acima, depois de executar composer install, dois arquivos serão criados no diretório raiz e no diretório pub chamado.user.ini

Edite esses arquivos para substituir suas configurações do PHP.ini; nesse caso, é o memory_limit

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

Se você estiver usando o Apache, precisará cuidar apenas dos arquivos dentro do diretório raiz, não do arquivo /pube vice-versa, se estiver usando o engineX (nginx)

Espero que ajude.


3

Você precisa aumentar a memória alocada para php. Para aumentar a memória, execute o comando php --ini. O Findout carregou o php.ini. Deveria ser como

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,

Vá para o arquivo php.ini carregado atualmente (/etc/php5/cli/php.ini) e encontre o parâmetro memory_limit. Aumente o valor no parâmetro memory_limit para 256M ou 512M.


3

Essa situação pode ser difícil de depurar, pois se você apenas

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

mostra o limite de memória para o PHP no seu caminho, o que pode ser bom. Mas o script magento (bin / magento) usa o preâmbulo

#!/usr/bin/env php

portanto, não está necessariamente usando o PHP do seu caminho! Uma maneira de rastrear o php.iniarquivo que está sendo usado é escrever um pequeno script como este:

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

chame-o getinfo(não getinfo.php!), torne-o executável e execute-o assim:

./getinfo  | grep php.ini

Isso mostrará o arquivo ini que você precisa alterar. Nesse arquivo, altere o valor da configuração, memory_limitconforme sugerido em outras postagens, para um valor superior a 128M. Salve o arquivo e verifique seu trabalho:

./getinfo  | grep memory_limit

2

Corri para um problema semelhante, o limite de memória foi aumentado para 2Gb dentro do arquivo php ini, o arquivo phpinfo () mostrou que ele estava definido como 2Gb. Parece que o Magento definiu o limite de memória manualmente em algum lugar. Aumentei o limite de memória dentro da lixeira / magento. Na primeira linha, coloquei isto:

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

o que fez funcionar.


2

Eu tenho solução para minha pergunta. Para erros de memória esgotada, precisamos adicionar um limite de memória para o código de compilação.

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

Espero que ajude alguém no futuro.


0

Usuário a seguinte linha depois php/bin magento -d memory_limit=5G s:d:c para o seu código de compilação. Isso ocorre devido ao limite de memória permitido para o php. Porém, após permitir o limite de memória no comando, isso removerá o erro e sua compilação e outros comandos serão executados sem nenhum erro. Basta adicionar isso
-d memory_limit=5G em todos os comandos, como você pode ver no exemplo acima. Voto a favor, se você achou minha resposta útil.


0

A compilação usando "-d memory_limit = 5G" não é uma decisão sábia. É uma solução temporária que pode ser afetada durante o processo de troca de modo, ou seja, do desenvolvedor para a produção. Desta vez, o sistema compila o código sem essa lógica "-d memory_limit = 5G", que gera o erro.

É uma opção melhor para corrigir este erro nesta fase. Para corrigir isso, abra o php.ini e aumente o memory_limit em 1024M e execute o comando de compilação php bin / magento setup: di: compile

Verifique isto: https://getcomposer.org/doc/articles/trou Troubleshooting.md#memory - limit - errors

Desta vez deve funcionar


0

Se você está enfrentando esse problema no Cli, por favor, bandeja este comando

php -dmemory_limit = 8G configuração bin / magento: upgrade


0

para M2 adicione limite de memória via ssh com o comando abaixo.

for command compile: php -dmemory_limit=5G bin/magento setup:di:compile for deploy command: php -dmemory_limit=5G bin/magento setup:static-content:deploy

você pode aumentar o valor 5G se o problema não for resolvido.


0

67

Uma solução rápida para o limite de memória no comando Magento 2 é adicionar diretamente o limite de memória dentro do comando.

Para o comando de compilação,

php -dmemory_limit = 5G configuração bin / magento: di: compile For Deployment

php -dmemory_limit = 5G configuração bin / magento: static-content: deploy Você pode alterar de acordo com 5G para máximo se o problema não for resolvido.

é realmente trabalho :)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.