O que há de errado com o PHP 5.4.6 e o que posso fazer sobre isso?

0

Eu instalei recentemente o servidor Ubuntu 12.10 com a versão de estoque do Apache2, PHP e MySQL. Algo está errado com PHP - primeiro eu pensei que era um problema com o PHP Markdown, como o script chegou a um ponto insuportável (depois de ser bloqueado por alguns segundos) em linha 1420 com o erro

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 130968 bytes) in /.../vendor/Markdown.php on line 1420

Depois de um tempo desisti de depurar o PHP Markdown, decidi desativá-lo temporariamente e seguir em frente com o meu projeto. Então eu peguei o erro:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes) in /mnt/hgfs/Dropbox/Projects/twork/lib/database.php on line 78

Esta é a linha 78 do database.php:

$results = $stm->fetchAll(PDO::FETCH_ASSOC);

E como todo o meu banco de dados contém apenas cerca de 20 linhas no momento, acho que você concorda que esse erro é uma besteira. Eu recentemente executei este projeto no PHP 5.3 em um sistema diferente sem problemas. Algo sobre a minha configuração atual do PHP está causando loops para continuar para sempre e ficar sem memória.

NOTA IMPORTANTE : Tanto o PHP Markdown como o PDO (MySQL) funcionam perfeitamente na versão CLI do PHP neste mesmo sistema - o problema é apenas com o Apache2 + PHP.

Existem configurações, bugs ou peculiaridades que você conhece que possam causar esse comportamento em PHP?

Aqui está o meu phpinfo()

    
por Hubro 10.04.2013 / 00:45

1 resposta

4

Não sei por que você está focando no banco de dados. O erro é realmente muito claro: o PHP esgotou a RAM alocada. Podemos criar hipóteses sobre o motivo pelo qual isso aconteceu, mas vasculhar o código de outras pessoas (especialmente quando é o PHP) é uma tarefa sem amor. Vamos apenas colocar isso em prática.

Permitir que o PHP use mais memória

Você nunca sabe - o roteiro pode ser realmente flácido. Pode haver um vazamento de memória. Pode ser um problema de explosão. Quem sabe. Você nunca descobrirá até transformar as coisas em onze.

1.Edit php.ini :

sudoedit /etc/php5/apache2/php.ini
  1. Alterar memory_limit = 128M para memory_limit = 256M
  2. Reinicie o PHP, ou o Apache (novamente, não é familiarizado com o modo como o mod_php realmente funciona )

Se ainda continuar a usar toda a memória do mundo, considero isso um erro grave. Se ele só bate em você nesta instalação

    
por Oli 10.04.2013 / 01:20