O erro “Warning: Cannot modify header information – headers already sent by” significa que um script PHP tentou enviar cabeçalhos HTTP (um redirecionamento, um cookie, uma sessão) depois que algum conteúdo já tinha sido enviado ao navegador. Pela regra do protocolo HTTP, os cabeçalhos vêm antes do conteúdo — então, se algo “vaza” antes (um espaço, uma linha em branco, um echo), os cabeçalhos falham. A boa notícia: a própria mensagem de erro diz qual arquivo e linha corrigir. Você pode vê-lo também como apenas “headers already sent” ou “cannot modify header information” — é o mesmo erro.
Conteúdo
Como ler a mensagem de erro (a parte mais importante)
A mensagem tem três partes — e elas não significam a mesma coisa. Entender isso é o que mais economiza tempo:
Warning: Cannot modify header information - headers already sent by
(output started at /home/usuario/public_html/wp-content/themes/tema/functions.php:42)
in /home/usuario/public_html/wp-includes/pluggable.php on line 1450 A sacada: o arquivo em ‘output started at’ é o que você corrige — é ali que a saída indevida começou. O arquivo do fim (‘in … on line …’) costuma ser um arquivo do núcleo como o pluggable.php, que só falhou por causa do primeiro. Não edite esse arquivo do núcleo — ele é a vítima. Muita gente perde tempo editando o arquivo errado; ler a mensagem certa evita isso.
O que causa esse erro?
O erro “Warning: Cannot modify header information” ocorre geralmente quando o código PHP tenta modificar os cabeçalhos HTTP depois que já foram enviados para o navegador. Esse erro é comum quando ocorrem tentativas de redirecionamento ou alterações nos cabeçalhos HTTP após o início do envio de dados para o navegador.
Existem algumas situações comuns que podem causar esse erro:
- Saída de dados antes dos cabeçalhos: Se houver qualquer saída de texto ou espaço em branco antes da função
header()do PHP, o erro pode ocorrer. Isso pode incluir espaços em branco antes da tag de abertura<?php, saída acidental de texto ou HTML antes da funçãoheader(), ou mesmo espaços em branco após o fechamento da tag?>em arquivos PHP.
Em arquivos que são só PHP — como o wp-config.php e o functions.php — simplesmente remova a tag de fechamento ?> do final. O PHP não precisa dela, e removê-la elimina de vez o risco de espaços em branco depois dela causarem esse erro.
- Reenvio de cabeçalhos: O erro pode ocorrer se houver tentativas de enviar cabeçalhos HTTP repetidamente. Isso pode acontecer quando as funções
header()ousetcookie()são chamadas em um loop ou após o envio dos cabeçalhos HTTP. - Arquivos incluídos: Se você estiver incluindo arquivos em seu código PHP que contenham saída de texto ou chamadas de função
header(), isso pode causar o erro. Certifique-se de que os arquivos incluídos não contenham saídas ou chamadas de funçãoheader(). - Erros de configuração do servidor: Em alguns casos, configurações específicas do servidor podem causar o erro. Isso pode incluir configurações relacionadas ao armazenamento em buffer de saída ou a configuração do cabeçalho “output_buffering”.
- BOM (caracteres invisíveis): arquivos salvos como “UTF-8 com BOM” adicionam bytes invisíveis antes do seu código, que contam como saída e disparam o erro. Salve o arquivo como UTF-8 sem BOM em um editor de código.
Para corrigir o erro “Warning: Cannot modify header information”, você pode seguir algumas diretrizes:
- Certifique-se de que não haja saída de texto ou espaços em branco antes da função
header()ou qualquer outra função relacionada aos cabeçalhos HTTP. - Evite reenviar cabeçalhos HTTP ou chamar a função
header()repetidamente. - Verifique se não há arquivos incluídos que contenham saída ou chamadas de função
header(). - Verifique as configurações do servidor para garantir que não haja conflitos ou erros relacionados ao armazenamento em buffer de saída ou outras configurações relevantes.
Lembre-se de que a solução exata pode variar dependendo do contexto específico em que o erro ocorre. É importante analisar o código e as configurações do servidor para identificar a causa exata do problema e aplicar as correções apropriadas.
Identificando o arquivo e linha de codigo com o erro
Um erro muito comum em servidores de hospedagem é o “warning: Cannot modify header information”. Isso significa um aviso que “Não é possível modificar as informações do cabeçalho“. A mensagem costuma aparecer como no nosso exemplo abaixo:
“Warning: Cannot modify header information – headers already sent by (output started at /home/usuario/public_html/arquivo.php:11) in /home/usuario/public_html/arquivo.php on line 26”
Observe que no exemplo acima, você consegue identificar algumas informações, em especial os diretórios e arquivos onde o erro esta ocorrendo. No caso do nosso exemplo, o diretório é o “/home/usuario/public_html/arquivo.php”. Além disso, o aviso nos informa o arquivo que está gerando o erro, que nesse caso é o “arquivo.php”, localizado dentro do diretório public_html, o diretório raiz do nosso servidor.
Basicamente, isto significa que o nosso arquivo está causando um erro que impede a aplicação de rodar corretamente.
Além disso, no final do aviso, ele também informa uma linha (on line…), que no exemplo acima, seria a linha 26. Ou seja, o erro iniciou-se a partir desta linha. Muitas vezes, essa informação pode nos poupar muito tempo, pois você consegue identificar onde está o erro, ou, pelo menos, onde ele se iniciou.
Sabendo disso, vamos então entender como solucionar esse erro! E, se você utiliza WordPress, separamos um tópico para você, então vá direto para nosso segundo Tópico!
Como solucionar o erro “Warning: Cannot modify header information”
De forma geral, existem algumas coisas que podem estar gerando esse problema. Portanto, abaixo você encontra as principais soluções possiveis para esse erro. Porém, recomendamos que antes de realizar qualquer alterações, você faça um backup dos arquivos, principalmente se não possui muita experiência em desenvolvimento. Mas vamos para nossa solução:
Primeiramente, verifique se há algum “enter”, “espaço”, outro comando ou caractere, antes do primeiro <?php. Esta é uma das causas mais comuns para originar esse erro.
Uma ótima dica para vocês:
A maioria dos editores de código atuais tem uma opção para remover espaços em branco automaticamente. No VS Code, por exemplo, você pode ativar “Trim Trailing Whitespace” (em File → Preferences → Settings, busque por “trim trailing”) ou usar a paleta de comandos. Assim você não precisa caçar espaços manualmente.
Mas, se ainda assim, a mensagem “warning: Cannot modify header information” continuar aparecendo, então verifique as possibilidades abaixo:
Verifique se em seu php.ini voce possui a opção output_buffering habilitada. Caso sim, então recomendamos usar a seguinte configuração no php.ini:
output_buffering = 4096
Verifique se há alguma saída para o navegador antes da execução do session_start(). Pois, ele só funciona se não houver nenhuma saída (echo ou print) antes do comando. Caso haja, remova.
Apesar de ser um caso raro, alguns sistemas possuem um php.ini personalizado. Nesse caso, pode ser que ele esteja desativando as configurações de session. Portanto, se o primeiro passo não resolver, analise o php.ini contido no diretório de execução do PHP procurando por alguma linha que possa desabilitar ou limitar as sessões e altere-as.
Solucionando o erro “Warning: Cannot modify header information” no WordPress
Se você utiliza WordPress no seu site, o erro “warning: Cannot modify header information” costuma ocorrer quando algum arquivo é corrompido, geralmente durante a instalação de um plugin ou tema.
Portanto, existem formas mais simples de resolver esses erros se você utiliza o WordPress.
A forma mais básica de todas é removendo e reinstalando o plugin ou tema. Ao fazer isso, geralmente, você já resolverá o problema.
Porém, se ainda assim o aviso persistir, significa que o erro se encontra em algum arquivo principal do próprio WordPress. Portanto, a melhor solução é conseguir uma cópia original do WordPress e substituir os arquivos corrompidos em sua instalação por esta nova versão. Porém, tenha certeza de que está utilizando um cópia da mesma versão do WordPress que está instalado em seu servidor, caso contrário, o erro pode persistir.
Fazendo as etapas acima, você certifica que está restaurando os arquivos corrompidos pelos arquivos no seu estado original, sem perder o restante de sua instalação do WordPress.
Porém, se preferir, você também pode tentar solucionar utilizando as técnicas do tópico anterior, buscando os erros diretamente no código.
O que é o output_buffering do PHP?
O output_buffering é uma diretiva de configuração do PHP que controla o armazenamento em buffer de saída (output buffering) do conteúdo gerado pelo PHP antes de ser enviado para o navegador. Quando o output_buffering está ativado, o PHP armazena o conteúdo gerado em um buffer interno antes de enviá-lo para o navegador.
Quando o armazenamento em buffer de saída está ativado, o conteúdo gerado pelo PHP não é enviado imediatamente para o navegador, mas é armazenado no buffer interno. O conteúdo só é enviado ao navegador quando o buffer é totalmente preenchido, quando o script PHP é concluído ou quando a função flush() é chamada explicitamente.
O output_buffering pode ser configurado no arquivo php.ini ou no código PHP usando a função ini_set().
Existem três opções principais para o output_buffering:
output_buffering = Off: O armazenamento em buffer de saída está desativado. O conteúdo gerado pelo PHP é enviado imediatamente para o navegador.output_buffering = On: O armazenamento em buffer de saída está ativado. O conteúdo gerado pelo PHP é armazenado em um buffer interno e enviado ao navegador quando o buffer é preenchido ou o script é concluído.output_buffering = N: O armazenamento em buffer de saída está ativado, e o tamanho do buffer é definido como “N” bytes. O conteúdo gerado pelo PHP é armazenado no buffer interno até que o tamanho do buffer seja atingido, momento em que é enviado ao navegador.
O output_buffering pode ser útil em várias situações, como quando você deseja modificar os cabeçalhos HTTP antes de enviá-los para o navegador, quando precisa controlar o momento exato em que o conteúdo é enviado ou quando deseja reduzir a quantidade de transferências entre o PHP e o servidor web.
É importante observar que, se o output_buffering estiver ativado, você deve ter cuidado ao lidar com a saída de texto antes dos cabeçalhos HTTP, pois isso pode resultar no erro “Warning: Cannot modify header information” mencionado anteriormente. Certifique-se de não ter saída de texto ou espaços em branco antes de enviar cabeçalhos HTTP.
Depois de corrigir o arquivo, uma versão em cache da página ainda pode mostrar o aviso. Limpe o cache do site e do servidor (e o do navegador) antes de concluir que a correção não funcionou.
Editar um arquivo por FTP, restaurar um backup, limpar o cache — na Homehost você tem gerenciador de arquivos fácil, backups e suporte em português que conhece WordPress, para que um espaço perdido não custe sua tarde.
Ver planos de hospedagem WordPressPerguntas frequentes
Conclusão
O erro “Cannot modify header information – headers already sent” parece intimidador, mas é um dos mais lógicos de resolver: a própria mensagem aponta o arquivo e a linha onde a saída indevida começou. Abra esse arquivo (o de “output started at”, não o do núcleo no final), remova o espaço em branco, a linha em branco ou a saída prematura — ou atualize o plugin ou tema responsável — e o aviso desaparece. Remover a tag ?> final de arquivos que são só PHP e salvar sem BOM evita que ele volte.
Esse é um dos erros de PHP mais comuns; veja também como resolver o limite de memória do PHP e o tempo máximo de execução. E se você prefere uma hospedagem com gerenciador de arquivos fácil, backups e suporte em português que conhece WordPress para esses momentos, conheça os planos de hospedagem WordPress da Homehost.