Saída distorcida após segunda carga de script

1

Em um servidor executando FreeBSD 8.3-RELEASE-p3 , Apache 2.2.22 das portas, PHP version 5.4.6 das portas, a saída está sendo confusa na carga segundo de um script. O comportamento problemático só foi detectado hoje, mas suspeitamos que tenha começado com uma atualização recente dos ports.

Aqui está um script de exemplo:

<?php
    // index.php
    print 'top of index.php<br>';
    require 'blah.php';
    print '<br>after require';
?>

<?php
    // blah.php
    print 'blah';
?>

Na primeira vez após o arquivo ser modificado, esta é a saída:

top of index.php<br>
blah
<br>after require

A segunda (e qualquer chamada subseqüente) para o mesmo script dá uma saída aleatória como ö ou àœ~cept-Encodin ou ðš~~ ~ '... basicamente, lixo embaralhado. Às vezes, são pedaços do nome do arquivo.

Nos logs de erro do Apache, estamos vendo segfaults e erros do PHP que a função "\ x0" não está definida, apontando para a linha 1 em index.php acima. Obviamente, print é uma função definida!

Se alguém salva o arquivo (faz com que o ctime seja alterado), o próximo carregamento exibirá novamente a saída esperada, mas, novamente, quaisquer cargas subsequentes serão distorcidas. Reiniciar o servidor faz isso, exceto que às vezes você pode obter 3-4 cargas antes que o embaralhamento ocorra.

Suspeito que exista um problema com o gzip ou o zlib, alguma outra compressão ou cache opcode ou algo semelhante. No entanto, nosso php.ini é exatamente o mesmo que outro servidor com a mesma configuração e versões que funciona perfeitamente bem.

Se alguém puder me indicar uma possível causa, ou uma maneira eficaz de diagnosticar o problema, agradeço. Eu verifiquei as configurações do php.ini, configurei uma amostra mínima e verifiquei que o zlib está OFF - sem dados.

    
por Chris 06.09.2012 / 18:10

0 respostas