OK

OK

Alguém em meu estúdio projetou uma página web há alguns anos, e agora o cliente decidiu mudar o servidor (ele mudou para um servidor Linux Apache rodando 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 header()função em PHP. Curiosamente, a página mostra isso:

OK

O servidor encontrou um erro interno ou configuração incorreta e não conseguiu concluir sua solicitação. Entre em contato com o administrador do servidor, [nenhum endereço fornecido] e informe a hora em que o erro ocorreu e qualquer coisa que você possa ter feito que possa ter causado o erro. Mais informações sobre esse erro podem estar disponíveis no log de erros do servidor. HTTP/1.1 200 OK Data: Seg, 15 de outubro de 2012 17:27:32 GMT Servidor: Apache/2.2.22 (Unix) FrontPage/5.0.2.2635 X-Powered-By: PHP/5.3.8 Expira em: Qui, 19 de novembro 1981 08:52:00 GMT Cache-Control: sem armazenamento, sem cache, deve-revalidar, pós-verificação = 0, pré-verificação = 0 Pragma: sem cache Keep-Alive: tempo limite = 5, máx = 399 Conexão: Codificação de transferência Keep-Alive: tipo de conteúdo fragmentado: text/html 232c

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

0 1f4

OK

O servidor encontrou um erro interno ou configuração incorreta e não conseguiu concluir sua solicitação. Entre em contato com o administrador do servidor, [nenhum endereço fornecido] e informe a hora em que o erro ocorreu e qualquer coisa que você possa ter feito que possa ter causado o erro. Mais informações sobre esse erro podem estar disponíveis no log de erros do servidor. 0

O mais intrigante é que se você atualizar a página ou pressionar Enter na URL, ela carrega corretamente. Estive verificando os logs e a culpa é apenas de um favicon inexistente. Também verifiquei o .htaccess, tudo estava correto (RewriteBase foi / como pretendido, e a única coisa que existe é outra regra que move solicitações ^en/ para request?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 @adaptr apontou, era uma questão de PHP e não de qualquer coisa relacionada ao servidor. O último codificador (sei que não é educado culpar o antecessor, mas esta situação me levou muito tempo) fez o seguinte:

/* 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 a fundo, algo me perturbou: exit;enviaria corretamente os cabeçalhos ou não? É claro que remover isso exit;continuaria executando a página (sei que não está nada correto, por isso não tentei antes). Porém, se os cabeçalhos não fossem enviados completamente, isso poderia causar qualquer tipo de problema (não sou servidor, não tenho certeza disso, desculpem, amigos). Após a retirada dessa exit;chamada, a página estava sendo formada corretamente, os cabeçalhos foram “fechados” (por causa do início da saída) e todas as engrenagens voltaram a se mover. Obrigado a todos, pessoal, melhor recompensado com 100 pontos =)

Responder1

Se os logs do Apache não mostrarem nenhum erro, isso significa que o PHP cuidou de tudo isso - e também retornou respostas estranhas ao cliente.

Habilite o log PHP adequado e investigue o que ele está fazendo.

Este bit na resposta é indicativo:

Codificação de transferência: fragmentada

Isso significa que o PHP está enviando a resposta em um fluxo (texto/html) quenão tem Content-Size definidonos cabeçalhos.

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

Essa é apenas uma razão possível; o registro adequado do PHP lhe dirá mais.

Responder2

Você precisa depurar o código da página em vez de procurar o motivo no servidor. Pelo que você postou, posso ver que foi criado usando o FrontPage (sério, um profissional usou isso?), portanto, 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 poderá ser executado corretamente.

informação relacionada