PHP Fatal error: Allowed memory size exhausted – como resolver
O erro PHP Fatal error: Allowed memory size exhausted é um dos mais comuns em aplicações PHP e indica que o script tentou utilizar mais memória do que o permitido pelo servidor.
Esse problema costuma aparecer durante processamento de arquivos grandes, execução de loops pesados, consultas complexas ou integrações com APIs.
Se você também enfrenta erros como 500 Internal Server Error, 403 Forbidden ou 401 Unauthorized, confira estes guias:
- Como resolver erro 500 e 404 em sites PHP
- Como resolver erro 403 Forbidden em sites PHP
- Como resolver erro 401 Unauthorized em PHP e APIs
O que significa o erro Allowed memory size exhausted
Esse erro indica que o PHP atingiu o limite máximo de memória configurado
pela diretiva memory_limit.
Quando isso acontece, o script é interrompido imediatamente, gerando um erro fatal.
---Principais causas do erro de memória no PHP
Processamento de arquivos grandes
Uploads de imagens, PDFs ou planilhas grandes consomem muita memória, principalmente quando manipulados em PHP.
---Loops infinitos ou mal otimizados
Um loop que nunca termina ou carrega muitos dados na memória pode estourar rapidamente o limite.
---Consultas ao banco retornando muitos registros
Buscar grandes volumes de dados sem paginação é uma causa comum desse erro.
---Bibliotecas ou frameworks pesados
Algumas bibliotecas consomem muita memória, principalmente quando mal configuradas.
---Como identificar o limite de memória atual do PHP
Você pode verificar o limite atual usando:
phpinfo();
Procure pelo valor de memory_limit.
Como resolver o erro Allowed memory size exhausted
Aumentar o limite de memória no php.ini
memory_limit = 256M
Após alterar, reinicie o servidor.
---Alterar o limite via código PHP
Em alguns servidores é possível ajustar diretamente no script:
ini_set('memory_limit', '256M');
---
Definir limite via .htaccess
php_value memory_limit 256M
Nem todas as hospedagens permitem essa configuração.
---Otimizar o código PHP
- Evitar carregar grandes volumes de dados de uma vez
- Usar paginação em consultas
- Destruir variáveis não utilizadas
- Evitar loops desnecessários
Exemplo prático de problema comum
Buscar todos os registros de uma tabela grande:
$dados = $pdo->query("SELECT * FROM tabela_grande")->fetchAll();
Prefira paginação:
$dados = $pdo->query("SELECT * FROM tabela_grande LIMIT 50")->fetchAll();
---
Diferença entre erro de memória e erro 500
O erro de memória pode gerar um erro 500 dependendo da configuração do servidor.
Para entender melhor o erro 500, veja: Como resolver erro 500 e 404 em sites PHP .
---Como evitar erro de memória no futuro
- Otimizar consultas ao banco
- Evitar carregar arquivos grandes em memória
- Monitorar consumo de recursos
- Usar limites adequados no PHP
- Testar scripts antes de publicar
Conclusão
O erro Allowed memory size exhausted não é um problema do servidor, mas sim um sinal de que o PHP atingiu seu limite de memória.
Com ajustes corretos de configuração e otimização do código, é possível resolver esse erro rapidamente e garantir mais estabilidade para aplicações PHP.