🎉 USE O CUPOM DESCONTO.FULL | 20% OFF acima de R$ 50,00

Como corrigir Headers already sent no WordPress

Time Full Services Time Full Services
Tipo Erro de PHP
Nome do erro Headers already sent EN: Headers already sent
Severidade Grave
Descrição O headers already sent é um erro de PHP que aparece quando o WordPress tenta enviar um cabeçalho HTTP (um redirecionamento, um cookie de login) depois que algum conteúdo já foi enviado ao navegador. A causa quase sempre é um espaço em branco ou um echo antes ou depois das tags do PHP em um arquivo como o wp-config.php ou o functions.php.

O que é o erro Headers already sent?

O headers already sent no WordPress é o aviso que o PHP emite quando uma função como header(), setcookie() ou um redirecionamento é chamada depois que o servidor já começou a enviar o corpo da página. No HTTP os cabeçalhos vêm antes do conteúdo, então qualquer caractere enviado cedo demais (um espaço, uma linha em branco, um BOM ou um echo) trava o envio dos cabeçalhos. A mensagem informa exatamente o arquivo e a linha onde a saída começou, o que aponta o culpado.

Como identificar

  • Mensagem “Warning: Cannot modify header information – headers already sent by (output started at /caminho/arquivo.php:N)”, citando onde a saída começou.
  • O login do wp-admin não persiste: você entra e é deslogado, porque o cookie de sessão não consegue ser definido.
  • Redirecionamentos param de funcionar e a página mostra o aviso no topo, antes do resto do conteúdo.
  • O erro surge logo após editar o wp-config.php ou o functions.php, ou após instalar um plugin que adiciona código a esses arquivos.
Antes de começar: Faça backup do arquivo antes de editar. Edite o wp-config.php e o functions.php só via FTP ou pelo gerenciador de arquivos da hospedagem, com um editor que mostre espaços e quebras de linha. O editor de temas do painel não evidencia espaços em branco e pode reintroduzir o erro.

Como prevenir

  • Em arquivos só de PHP, nunca inclua a tag de fechamento no final
  • Configure o editor de código para salvar sempre como UTF-8 sem BOM
  • Evite deixar echo, print ou var_dump de depuração no código que vai para produção

Causa

  • Espaço em branco ou linha em branco antes da tag de abertura do PHP no início do arquivo.
  • Espaço ou linha em branco depois da tag de fechamento do PHP no fim do wp-config.php ou do functions.php.
  • Arquivo salvo com BOM (Byte Order Mark) UTF-8, que envia bytes invisíveis antes de qualquer cabeçalho.
  • Um echo, print ou var_dump deixado no código que envia conteúdo antes do redirecionamento ou do cookie.
  • Plugin ou tema que imprime aviso de erro (notice) na tela antes do WordPress definir os cabeçalhos.

Como resolver

  1. Leia o arquivo e a linha do output: a mensagem traz 'output started at /caminho/arquivo.php:N'. Esse é o arquivo e a linha onde a saída indevida começou. Abra-o via FTP.
  2. Remova espaços antes da abertura do PHP: garanta que o arquivo comece exatamente na tag de abertura, sem nenhum caractere, espaço ou linha em branco antes dela.
  3. Remova a tag de fechamento no fim: em arquivos só de PHP como wp-config.php e functions.php, apague a tag de fechamento do final. Sem ela, nenhum espaço acidental depois dela pode ser enviado ao navegador.
  4. Salve o arquivo sem BOM: no seu editor de código, escolha salvar como UTF-8 sem BOM. O BOM adiciona bytes invisíveis no começo do arquivo que disparam o erro.
  5. Procure echo e var_dump esquecidos: se o output vier de um plugin ou snippet, busque por echo, print ou var_dump deixados no código e remova-os.
PHP
<?php
// CERTO: a tag de abertura e o primeiro caractere do arquivo, sem espaco antes.
// Em arquivos so de PHP (wp-config.php, functions.php), NAO inclua a tag de
// fechamento no fim. Assim nenhum espaco acidental depois dela vira output.

define( 'WP_DEBUG', false );

// fim do arquivo: sem tag de fechamento, sem linha em branco extra apos isto

Perguntas frequentes

O que significa output started at no aviso?
É o ponto exato onde algum conteúdo começou a ser enviado ao navegador antes dos cabeçalhos: o aviso cita o arquivo e a linha. Quase sempre é um espaço em branco antes da abertura do PHP ou depois do fechamento naquele arquivo.
Por que o login do wp-admin não persiste com esse erro?
Porque o cookie de sessão é um cabeçalho HTTP. Se a saída já começou, o WordPress não consegue definir o cookie e você é deslogado a cada navegação. Corrigir o espaço em branco que dispara o erro resolve o login.
Como o BOM causa headers already sent?
O BOM é uma sequência de bytes invisíveis que alguns editores adicionam no início de arquivos UTF-8. Esses bytes contam como saída e são enviados antes dos cabeçalhos. Salve o arquivo como UTF-8 sem BOM para eliminar a causa.
Devo apagar a tag de fechamento do PHP mesmo?
Em arquivos que contêm apenas PHP, sim. Omitir a tag de fechamento é a recomendação dos padrões de código do WordPress justamente para evitar que espaços ou quebras de linha após ela sejam enviados ao navegador.
O erro cita um plugin. Como corrijo sem editar o plugin?
Desative o plugin via FTP renomeando a pasta dele para confirmar que é a causa. Se for, atualize-o ou contate o desenvolvedor: editar o arquivo do plugin é sobrescrito na próxima atualização.
Posso resolver sem FTP?
Em geral não, porque o arquivo que precisa ser limpo costuma ser o wp-config.php ou o functions.php, fora do alcance do painel quando o erro já trava o login. O caminho seguro é editar via FTP ou pelo gerenciador de arquivos da hospedagem.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes