Uma única página mostrando 3 solicitações (também imprimindo os cabeçalhos)

2

Alguém no meu estúdio projetou uma página alguns anos atrás, e agora o cliente decidiu mudar o servidor (ele se mudou para um servidor Linux Apache rodando o Gen2 SMP, 64 bits, PHP versão 5.3.8, Standard MYSQL versão 5). De repente, começou a fazer coisas estranhas.

Ao clicar em um link que requer login, a página redireciona você para a página de login usando a função header() no PHP. Curiosamente, a página mostra isso:

OK

The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. HTTP/1.1 200 OK Date: Mon, 15 Oct 2012 17:27:32 GMT Server: Apache/2.2.22 (Unix) FrontPage/5.0.2.2635 X-Powered-By: PHP/5.3.8 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Keep-Alive: timeout=5, max=399 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html 232c

Em seguida, a própria página e, em seguida, outro cabeçalho:

0 1f4

OK

The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. 0

O mais intrigante é que, se você atualizar a página ou pressionar Enter na URL, ela será carregada corretamente. Eu tenho verificado os logs, e isso só culpa um favicon inexistente. Eu também verifiquei o .htaccess, tudo estava correto (RewriteBase era / como pretendido, e a única coisa que existe é outra regra que move ^ en / pedidos para solicitar? Lang = en. Alguém já enfrentou algo assim?

Editar : o IE não aciona esses dois cabeçalhos. Isso está ficando mais estranho.

A solução! : Como o @adaptr apontou, era uma questão de PHP e não de qualquer coisa relacionada ao servidor. O último codificador (eu sei que não é educado culpar o antecessor, mas esta situação me levou muito tempo) fez isso:

/* config.php -> included everywhere as a bootstrap*/
// ... constant/mysql setup

if($notLogged)
{
    $forward = ...;//previous url
    header("Location: ".WWW.LANG."/customer-area/login/index.php?forward=".$forward);
    exit;
}

Depois de olhar mais fundo, algo me torceu: exit; enviaria corretamente os cabeçalhos, ou não? Claro, remover esse exit; continuaria a executar a página (eu sei que não está correto, é por isso que eu não tentei antes). No entanto, se os cabeçalhos não estivessem sendo enviados completamente, isso poderia causar qualquer tipo de problema (eu não sou um cara servidor, não tenho certeza sobre isso, desculpe mates). Depois de remover essa chamada exit; , a página estava sendo formada corretamente, os cabeçalhos foram "fechados" (por causa do início da saída) e todas as engrenagens começaram a se mover novamente. Obrigado a todos, rapazes, melhores 100 pontos =)

    
por Korcholis 15.10.2012 / 19:42

2 respostas

1

Se os logs do apache não mostrarem nenhum erro, isso significa que o PHP lidou com tudo isso - e também retornou as respostas estranhas ao cliente.

Habilite o registro correto do PHP e investigue o que está fazendo.

Esse bit na resposta é indicativo:

Transfer-Encoding: chunked

Isso significa que o PHP está enviando a resposta em um fluxo (text / html) que não tem um tamanho de conteúdo definido nos cabeçalhos.

Isso pode causar qualquer saída de cabeçalho (algo que o PHP armazena em cache com frequência, ou seja, é gerado fora de ordem), o que escapa um pouco até que o cliente pense que uma nova página está sendo enviada.

Esse é apenas um dos motivos possíveis; logging próprio do PHP lhe dirá mais.

    
por 18.10.2012 / 11:22
0

Você precisa depurar o código da página em vez de olhar para o servidor pelo motivo. Eu posso ver pelo que você postou que foi criado usando o FrontPage (realmente, um profissional usou isso?), Então ele inevitavelmente contém código que não funcionará corretamente em uma plataforma que não seja da Microsoft. Corrija o código removendo todo o código específico da Microsoft e ele pode ser executado corretamente.

    
por 18.10.2012 / 12:56