Como resolver erro fatal do PHP: tamanho de memória permitido de 8388608 bytes esgotado

Um dos erros mais comuns e frustrantesencontrado pelos codificadores PHP diz: “Erro fatal: tamanho de memória permitido de 8388608 bytes esgotado…” seguido por algo como “(tentou alocar XXXX bytes) em /home/www/file.module na linha 12.” Esse erro fatal do PHP é exibido porque, por padrão, o PHP tem um limite de uso de memória de 8 MB para qualquer script. Isso é bom, na verdade, porque você não deseja que um script PHP desonesto destrua o servidor consumindo toda a memória. Mas, ocasionalmente, você terá um script PHP que normalmente excede o limite de 8 MB (por exemplo, para importar ou fazer upload) Para solucionar a mensagem de erro "Erro fatal: tamanho de memória permitido de 8388608 bytes esgotados ...", basta inserir esta linha de código no seu script na parte superior:

ini_set ("memory_limit", "16 milhões“);

memory_limit

Isso definirá seu limite de memória para 16 MB, em vezde 8 MB. Você pode e deve mexer com esse número para que fique o mais baixo possível sem repetir a mensagem de erro. Isso alterará apenas o limite de memória para esse arquivo PHP específico.

Como alternativa, você pode alterar o arquivo php.ini para aumentar o limite de memória. Isso afetará todos os scripts no seu servidor. Simplesmente abra o php.ini e encontre a linha que lê "memory_limit" e altere-a:

memory_limit = 16M

Erro fatal: tamanho de memória permitido 134217728 esgotado

Eu notei no meu próprio PHP.arquivo ini que meu padrão é muito maior em 128M. Portanto, se eu receber essa mensagem de erro, ela será lida: “Erro fatal: tamanho de memória permitido de 134217728 bytes esgotados…” e, obviamente, será um problema muito maior. Mas tem a mesma solução alternativa que “Erro fatal: tamanho de memória permitido de 8388608 bytes esgotados…” ou “Erro fatal: tamanho de memória permitido de 16777216 bytes esgotados…” ou qualquer outra coisa. Aparentemente, o padrão memory_limit foi aumentado de 8M para 16M no PHP 5.2.0 e agora é de 128M para o PHP 5.3.0, o que explicaria por que você pode não receber essa mensagem de erro.

Você também pode desativar o limite de memória definindo memory_limit como -1 no PHP.ini.

memory_limit = -1

No entanto, isso geralmente não é uma boa ideia, por razões óbvias.

Nota: Você também pode usar a linha memory_limit na sua página .htaccess.

Agora, lembre-se, isso é apenas uma solução alternativa. Realmente, seu script PHP deve não exceder 8 MB, a menos que seus arquivos de upload oufazendo outra coisa que obviamente está consumindo muito uso de memória. O que você realmente deveria fazer é tentar descobrir por que seu script está usando tanta memória e tentar corrigi-lo. Uma maneira de descobrir quanta memória seu script PHP está usando é usar a função PHP memory_get_usage (). Simplesmente faça o eco a qualquer momento do seu script para descobrir onde o uso da memória está aumentando:

eco memory_get_usage ();

Se você receber essa mensagem de erro no Drupal ou no Joomla, o provável culpado é um novo módulo ou pacote. Por exemplo, no Drupal, a página admin / modules carrega cada módulo na instalação do Drupal, que pode serpeludo se um módulo personalizado estiver com erros, corrompido ou invadido. Tente desativar os módulos, um por um, para identificar qual é a causa da queda. Além disso, alguns provedores de hospedagem ignoram suas tentativas de modificar os limites de memória do seu código PHP, portanto, talvez você precise entrar em contato com o suporte de hospedagem para ajudá-lo. Às vezes descobri que preciso editar o arquivo php.ini e, às vezes, colocar o código no arquivo .htaccess. De qualquer forma, espero que esta informação aqui seja suficiente para você entrar no seu caminho!

0

Artigos semelhantes

Deixe um comentário