Seu site apresenta a mensagem de erro cannot modify header information? Confira neste artigo algumas práticas que podem te ajudar a corrigir este erro.
Você acessou seu site e apareceu uma mensagem de erro cannot modify header information? Esta mensagem não indica um erro e sim um aviso. Pode ser exibida de dois modos:
Warning: Cannot send session cookie
Entendendo os termos
Header é um cabeçalho que contém as informações de uma página web. Quanto as informações, podemos encontrar dados sobre codificação, tamanho da página, tempo de duração de cache, hora da última atualização e demais dados relevantes sobre uma página.
Os cookies, mecanismos que servem para registrar a atividade de navegação do usuário, são definidos antes do envio do header e enviados para o navegador dentro do header.
Toda sessão possui um cookie identificador (session cookie) que é enviado para o visitante do site, a fim de identificá-lo e manter os valores da sua sessão, como páginas visitadas, logins e outras informações do visitante do site.
Por que acontece essa dificuldade?
Depois do envio do header, o servidor envia o HTML da página toda e o navegador começa a montar ela para o usuário. Quando se lê headers already sent no aviso, significa que o seu servidor já enviou o header e após esse envio, a programação do site está tentando criar ou alterar alguma informação que deva ser enviada no header.
O header começa a ser enviado logo que se insere o primeiro caractere no HTML final da página, seja fora do código PHP com HTML normal, seja dentro do código PHP com um echo ou print.
Tudo que está fora das tags PHP é HTML!
Se a programação tentar criar ou alterar um cookie depois que o header foi enviado o visitante do site receberá o aviso de erro.
Se a programação tentar criar ou remover algum valor da sessão depois do envio do header vai receber a mensagem de erro.
Exemplos práticos
Quando o erro é na linha 1, indica que há algum caractere inválido antes da tag ou até mesmo um espaço em branco.
<?php // Espaço antes da tag PHP | Envio do header
phpinfo();
?>
No script abaixo, o desenvolvedor tentou criar uma sessão (que definirá um cookie de sessão novo) após enviar o header (por causa do echo).
<?php
echo 'Olá mundo'; // Aqui está o header, sendo enviado ao usuário do site através do comando echo
session_start(); // Início de sessão depois do envio do header = Erro
?>
Como resolver a dificuldade?
Deve ficar claro para você de que isto é uma dificuldade de programação, então você mesmo deve realizar os ajustes. O que você deve fazer para solucionar esta dificuldade em sua aplicação?
Não definir e/ou criar um cookie ou sessão depois de enviar um echo;
Todo código que trabalhe com headers (sessões, cookies, redirecionamentos e encriptação) devem ser enviados, criados, definidos e modificados antes do HTML.