Erro Composer: “Allowed memory size”. Como resolver?
Para Magenteiros
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.
- PagSeguro (PagBank) para Magento 1 recebe a Nova Geração - 9 de abril de 2024
- Recorrência no WooCommerce Sem Plugins Pagos - 28 de janeiro de 2024
- Chargeback. O que é, e como se livrar deles. - 19 de dezembro de 2023
Deixe seu comentário
[fbcomments url="https://www.magenteiro.com/blog/para-magenteiros/composer-allowed-memory-size-resolvido/"]