Resolver problemas

Erros de limite de memória no Composer e no PHP

Revisto a 3 min de leitura Composer memória

Se, ao executar o composer ou alguma tarefa PHP, receber erros como:

  • Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors
  • PHP Fatal error: Allowed memory size of XXXXXX bytes exhausted

O erro fatal Allowed memory size ... exhausted confirma que esse processo atingiu o memory_limit. Verifique primeiro a versão, o PHP do terminal e o valor efetivo:

composer --version
composer diagnose
php --ini
php -r 'echo ini_get("memory_limit"), PHP_EOL;'

Para uma execução concreta, aumente de preferência o limite para um valor finito compatível com o plano:

COMPOSER_MEMORY_LIMIT=2G composer install
php -d memory_limit=2G script.php

O teste pontual sem limite que o Composer documenta deve incluir o comando na mesma atribuição:

COMPOSER_MEMORY_LIMIT=-1 composer install

Executar apenas COMPOSER_MEMORY_LIMIT=-1 sem export não transmite o valor ao processo seguinte. -1 elimina o limite do processo do Composer, mas não necessariamente o de processos externos, não aumenta a RAM nem evita os limites PMEM ou NPROC do CloudLinux. Se aparecer Killed, se não houver um erro fatal do PHP ou se a falha persistir, reveja Resource Usage e os seus snapshots.

Antes de alterar permanentemente Select PHP Version > Options > memory_limit, confirme através de php --ini que o PHP do terminal carrega essa configuração. Mantenha um valor finito e compatível com os recursos do plano.

Instalar as dependências previstas

Se o projeto incluir composer.lock, composer install deve respeitar essas versões. Não o substitua por composer update para tentar reduzir a memória: resolveria outro conjunto de dependências. Utilize uma versão mantida do Composer compatível com o projeto e verifique que binário PHP o seu lançador executa realmente.

Os exemplos de variáveis são para uma shell compatível com Bash ou Zsh; o PowerShell e o CMD usam outra sintaxe. O Composer pode executar plugins e scripts do projeto, por isso faça o teste num projeto de confiança e reveja o seu impacto antes de repetir uma instalação em produção. Consulte o guia oficial de memória do Composer.

Também lhe pode ser útil

Algo não bate certo ou mudou? Diga-nos e revemos.