Página Inicial > Geral > “Warning: Cannot modify header information…” no WordPress

“Warning: Cannot modify header information…” no WordPress

Rodando localmente o WordPress 3.1 de um novo projeto no meu MacBook, estava modificando o layout do tema que estou utilizando e adicionando outras funcionalidades. De repente, começou a aparecer, principalmente na interface de administração, a seguinte mensagem de erro:

Warning: Cannot modify header information - headers already sent by (output started at /Users/Prodis/TimeDev/pontoa/public_html/wp-content/themes/pontoa/includes/widgets/my-post-cycle-widget.php:93) in /Users/Prodis/TimeDev/pontoa/public_html/wp-includes/pluggable.php on line 897

É um alerta do PHP, mas digo erro, pois dependendo da página a mesma não carregava e em muitas outras, que utilizam AJAX, a mensagem aparecia em algum lugar da página e não terminava de renderizar.

Entre os arquivos que alterei, fazia parte o arquivo my-post-cycle-widget.php, que contém o código de um dos widgets que vieram com o tema. Então abri o arquivo para ver o que tinha na linha 93 e para surpresa minha o arquivo somente tinha 92 linhas.

Widgets do WordPress são basicamente uma classe que herda da classe WP_Widget e implementa algumas funções como widget, update e form, para adicionar seu comportamento. Sendo assim, todo o arquivo de um widget é envolvido pelas tags <?php   ?>.

Foi aí que eu notei que na última linha do arquivo my-post-cycle-widget.php havia uma linha vazia logo após o fechamento da tag do PHP. Removi essa linha vazia (a linha 92) e tudo voltou ao normal.

O erro aconteceu porque a função wp_redirect, que se encontra no arquivo pluggable.php, altera o cabeçalho HTTP exatamente assim:

header("Location: $location", true, $status);

Se algum conteúdo HTML for enviado antes de tentar modificar o cabeçalho HTTP, o erro vai acontecer. E sim, espaços e linhas vazias são considerados conteúdo HTML.


Geral , , ,

  1. Fabio Perrella
    28, março, 2011 em 21:50 | #1

    Tive problemas com isso faz pouco tempo! O que o pessoal recomenda é que em arquivos somente PHP (que não mistura com código html) que não seja fechada a tag do php ?>, com isso nao tem o risco de aparecer uma linha em branco desse tipo

    Mais detalhes aqui http://activeblogging.com/info/can-you-leave-off-the-closing-php-tag-in-your-source-code/

  2. 28, março, 2011 em 22:42 | #2

    Entendi, apesar de achar bem estranho não fechar a tag.

  3. 29, março, 2011 em 06:56 | #3

    Obrigado por compartilhar, e parabens pelo seu blog.

    Ontem (28/03/2011) enfrentei este mesmo problema (em proporções um pouco maiores) com um script de terceiros, e além do espaço após, havia problemas de cacatere. Bastou abrir e salvar o(s) arquivo(s) para o problema se resolver.

  4. 29, março, 2011 em 08:32 | #4

    Que bom que pude lhe ajudar, Eltern. Obrigado.

  5. Marcia
    11, janeiro, 2013 em 18:42 | #5

    Valeu!!!! penei muito pra conseguir, seu blog me salvou!

  6. 13, janeiro, 2013 em 08:31 | #6

    @Marcia
    Legal que resolveu o problema.

  7. Ivanildo
    16, setembro, 2014 em 09:42 | #7

    Obrigado, realmente funcionou… ja estava desistindo!

  8. 8, dezembro, 2014 em 00:16 | #8

    @Ivanildo
    Boa, que bom que resolveu.

  1. Nenhum trackback ainda.