A mensagem completa diz “Allowed memory size of … bytes exhausted (tried to allocate … bytes)”. Significa que um único pedido tentou usar mais memória do que o memory_limit do PHP deixa. A correção rápida é subir esse valor; a correção de verdade é saber quem a gastou.
Descobrir quem gastou
No fim da mensagem vem um caminho e um número de linha. Esse caminho responde à pergunta mais depressa do que qualquer palpite.
| O caminho aponta para… |
Quer dizer |
O que fazer |
| wp-content/plugins/nome |
Um plugin está gastando demais, normalmente numa tarefa pesada (cópias, importação, relatórios). |
Suba o limite para a tarefa acabar, e depois veja se há versão nova ou alternativa mais leve. |
| wp-content/themes/nome |
O tema ou um construtor de páginas a carregar muito. |
Suba o limite. Se continua faltando, o tema é pesado para o plano. |
| Arquivos de imagem (gd, imagick) |
Uma fotografia enorme a ser processada. |
Reduza a imagem antes de a enviar. O gasto cresce com as dimensões, não com o peso do arquivo. |
| Código seu, sempre no mesmo lugar |
Um ciclo que não acaba, ou uma lista inteira carregada de uma vez. |
Aqui subir o limite só adia o erro. Corrija o código. |
Subir o limite
| 1 |
No cPanel abra Select PHP Version, escolha a versão que o site usa e abra a aba Options.
|
|
| 2 |
Procure memory_limit e escolha um valor acima do atual, um degrau de cada vez.
|
|
| 3 |
Se só uma aplicação precisa, ponha antes um .user.ini na pasta dela com uma linha como memory_limit = 256M (exemplo). Veja onde pôr cada valor.
|
|
| 5 |
Repita a ação que dava o erro. Se passar, pare aqui.
|
|
Para confirmar que o valor novo está em vigor, abra um arquivo com <?php phpinfo(); na pasta do site e procure memory_limit: a coluna Local Value é a que conta. Se o número não mudou, foi gravado no lugar errado, ou o site roda em outra versão do PHP. E antes de subir muito o limite, experimente desativar os plugins um a um e repetir a ação: se o erro desaparece com um deles desligado, o problema não era o limite.
|
O memory_limit não é a memória da sua conta. É o tecto por pedido. A conta tem os seus próprios limites de memória e de processos, e se o pedido os ultrapassar o resultado é um erro 500 ou 508 e não uma subida de limite. Veja os limites que ninguém anuncia e os erros do site explicados.
|
|
Se a mensagem só aparece numa tarefa pesada (importar, exportar, gerar cópias), considere rodar essa tarefa por linha de comandos ou por cron, onde não há requisição web. Veja rodar um script PHP numa tarefa agendada.
|
PRODUTO RECOMENDADO Alojamento de sites com cPanel Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde R$ 36,30/mês (plano de 3 anos, com cupom) Ver planos |