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:

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

---

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

---

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.