Corrigindo o erro "Cannot modify header information" no PHP

Esse erro ocorre quando há uma tentativa de modificar cabeçalhos HTTP após a saída de conteúdo. Veja como resolver.

Introdução

O erro "Warning: Cannot modify header information - headers already sent" no PHP ocorre quando há uma tentativa de modificar os cabeçalhos HTTP após o envio de qualquer saída para o navegador. Esse erro é comum ao usar header() para redirecionamento ou definir cookies, mas pode ser facilmente evitado com boas práticas.

1. Identificando a origem do problema

O erro normalmente ocorre por causa de espaços em branco ou saídas antes da chamada do header(). Veja um exemplo que causa esse problema:

<?php
    echo "Iniciando script";
    header("Location: pagina.php");
?>

Aqui, a saída de texto impede a modificação dos cabeçalhos. A solução é remover qualquer saída antes da chamada do header().

2. Removendo espaços em branco antes das tags PHP

Um erro comum é ter espaços ou quebras de linha antes da abertura <\?php. Exemplo incorreto:


<?php
header("Location: pagina.php");

Remova qualquer espaço antes da abertura <\?php para evitar esse problema.

3. Utilizando ob_start() para evitar conflitos

Se o código precisa de saída antes do header(), uma solução é utilizar ob_start() para controlar o buffer de saída:

ob_start();
echo "Carregando...";
header("Location: pagina.php");
ob_end_flush();

Isso garante que o cabeçalho só seja enviado quando o buffer for liberado corretamente.

Conclusão

Para evitar o erro "Cannot modify header information", certifique-se de que não há nenhuma saída antes de modificar os cabeçalhos, remova espaços em branco antes das tags PHP e utilize ob_start() quando necessário. Seguindo essas práticas, o código se tornará mais confiável e funcional.

No desenvolvimento web com PHP, o controle dos cabeçalhos HTTP é fundamental para realizar redirecionamentos e definir cookies corretamente. Quando ocorre o erro "Cannot modify header information", significa que o código já enviou algum conteúdo ao navegador antes de tentar modificar os cabeçalhos. Esse problema pode ser frustrante, mas é fácil de evitar com boas práticas.

A melhor forma de prevenir esse erro é garantir que não haja saída antes das funções header(), setcookie() ou session_start(). Além disso, o uso de buffers de saída com ob_start() pode ser útil em casos onde a estrutura do código torna difícil garantir que os cabeçalhos sejam enviados antes da saída. Dessa forma, é possível evitar conflitos e garantir que os cabeçalhos HTTP sejam manipulados corretamente, sem comprometer a funcionalidade da aplicação.

Algumas aplicações:

  • Evitar erros ao redirecionar usuários com header("Location: ...").
  • Corrigir problemas ao definir cookies e sessões com setcookie() e session_start().
  • Garantir que a manipulação de cabeçalhos HTTP funcione corretamente.
  • Melhorar a compatibilidade do código PHP em servidores diferentes.

Dicas para quem está começando

  • Evite qualquer saída de texto antes de chamar header().
  • Verifique se não há espaços em branco antes da abertura <\?php.
  • Use ob_start() para evitar conflitos ao modificar cabeçalhos.
  • Não utilize echo ou print antes de manipular cabeçalhos HTTP.
  • Certifique-se de que todos os arquivos PHP estejam salvos sem BOM (Byte Order Mark).

Contribuições de Renata Oliveira

Compartilhe este tutorial: Como resolver

Compartilhe este tutorial

Continue aprendendo:

O que significa "Fatal error: Uncaught Error: Call to undefined function" no PHP e como resolver?

Esse erro ocorre quando uma função chamada no código não está definida ou disponível no ambiente de execução. Veja como resolver.

Tutorial anterior

Por que estou recebendo "Undefined variable" no PHP e como corrigir?

Esse erro acontece quando uma variável não é definida antes de ser usada. Veja como corrigir e evitar esse problema.

Próximo tutorial