Cursos Magento

Erro Composer: “Allowed memory size”. Como resolver?

Atualizado em 23 de junho de 2021

Ao executar um comando composer update ou composer require, é comum termos o erro parecido com este:

“PHP Fatal error: Allowed memory size of 2147483648 bytes exhausted (tried to allocate 4096 bytes)”.

Este tipo de erro acontece quando tentamos instalar o Magento 2 usando composer, instalar módulos ou mesmo ao atualizar módulos existentes.

O composer nada mais é que um executável PHP com extensão .PHAR.

Ele é executado pelo mesmo PHP que você usa na linha de comando.

Quando executamos um arquivo ou comando php na linha de comando, podemos alterar valores de configuração passando o parâmetro -d.

Sendo assim, também podemos executar o composer informando um número maior de memória. Ou até mesmo sem restringir a memória utilizada e resolvendo o problema acima de uma vez.

Por exemplo: php -dmemory_limit=-1 composer.phar update

Encontrando o composer.phar

Quando digitamos um comando composer, o arquivo composer.phar é chamado.

Para localizar este arquivo, digite: whereis composer

Exemplo:

$ whereis composer
composer: /usr/bin/composer.phar /usr/local/bin/composer

No exemplo acima, podemos ver que o composer.phar a ser executado quando chamamos o composer é o /usr/bin/composer.phar

Resolvendo o problema

Sabendo onde nosso composer.phar está, tudo que precisamos fazer agora é rodar nosso comando original via php e configurando o memory_limit com o valor -1, que indica que não queremos impor nenhum limite de memória nesta execução.

Considerando a localização do nosso composer.phar como mostrado acima, e considerando que queremos executar um comando composer update, tudo que precisamos fazer é:

$ php -dmemory_limit=-1 /usr/bin/composer.phar update

Ou seja, substituímos a palavra composer do comando composer update, por php -dmemory_limit=-1 /usr/bin/composer.phar.

Porque isso acontece

Isso ocorre por conta da configuração do PHP na linha de comando do nosso servidor. Por padrão, o valor máximo de memória (memory_limit) configurado no PHP é 128Mb. E isso é insuficiente para a boa parte das operações feitas com o comando composer.

Você pode alterar esta configuração para um valor maior, alterando o arquivo de configuração php.ini.

Para localizar o arquivo php.ini utilizado pelo php no terminal digite php --ini.

O resultado deste comando lhe trará o arquivo em questão na linha “Loaded Configuration File”. Ex:

$ php --ini
Configuration File (php.ini) Path: /etc/php/7.4/cli
Loaded Configuration File:         /etc/php/7.4/cli/php.ini
Scan for additional .ini files in: /etc/php/7.4/cli/conf.d
Additional .ini files parsed:      /etc/php/7.4/cli/conf.d/01-ioncube.ini,
/etc/php/7.4/cli/conf.d/10-mysqlnd.ini,
/etc/php/7.4/cli/conf.d/10-opcache.ini,
/etc/php/7.4/cli/conf.d/10-pdo.ini,
/etc/php/7.4/cli/conf.d/15-xml.ini,
/etc/php/7.4/cli/conf.d/20-bcmath.ini,

No exemplo acima, bastaria editar o valor memory_limit no arquivo /etc/php/7.4/cli/php.ini e usar um valor maior que o atual.

Últimos posts por Ricardo Martins (exibir todos)
Comentários

Deixe seu comentário

[fbcomments url="https://www.magenteiro.com/blog/para-magenteiros/composer-allowed-memory-size-resolvido/"]