10
Nov
07

Cannot send session cookie – headers already sent by (SOLUÇÃO)

Boa noite gente, este pode ser um dos artigos mais simples que você possa conhecer, mas vai uma dica para que está sofrendo com o session_start(); (PHP), esta dica vai para quem está USANDO o session_start() e não sabe o por que de não estar funcionando o código. Lá vai a solução que REALMENTE FUNCIONA:

erro->

Cannot send session cookie – headers already sent by

Warning: session_start() [function.session-start]: Cannot send session cookie – headers already sent by

Essa mensagem significa que a função session_start() não pode enviar o cookie da sessão porque os cabeçalhos (HTTP headers) já foram enviados.

Normalmente o interpretador envia a saída assim que o comando é processado, por isso você não pode ter um echo, print ou qualquer outra coisa que produza uma saída antes da função session_start() (ou outras funções que precisão modificar os headers).

Você pode usar session_start() antes de qualquer saída ou usar session_start em qualquer lugar com output buffering.

Pode obter mais informações visitando os detalhes da função session_start()

+{+++++}+

VERIFIQUE SE O SEU EDITOR PHP ESTÁ GERANDO CARACTERES ESTRANHOS ANTES DO CÓDIGO, POR EXEMPLO:

<?php

session_start();

AS VEZES INICIAMOS NOSSO CÓDIGO ASSIM E A MENSAGEM DE ERRO ACONTECE

Cannot send session cookie – headers already sent by

VERIFIQUE SE O SEU EDITOR PHP ANTECIPOU OS CARACTERES, COMIGO JÁ ACONTECEU DELE COLOCAR ALGO DO TIPO “r%e#$@” ANTES DA TAG DE INICIAÇÃO DO CÓDIGO PHP (<?php…), PARA VER ISTO USE DIVERSOS EDITORES (o vi do unix não consegue visualizar e nem o dreamweaver).


15 Respostas para “Cannot send session cookie – headers already sent by (SOLUÇÃO)”


  1. 1 Jack
    Setembro 18, 2008 às 9:02 pm

    Nome meu caso acontecia pq eu uso uma pagina index que monta o site com includes. Então eu só tinha que colocar session_start() nesta página e tirar de todas as outras.

  2. 2 André Barreto
    Dezembro 6, 2008 às 1:00 pm

    Olá Jack….
    Funcionou perfeito kra… valeu …. abraços … se precisar de ajuda em algum código aí me avisa via email….

  3. 3 Teka
    Janeiro 8, 2009 às 10:06 am

    Foi ótimo encontrar esse comentário aqui.. Resolveu meu problema ;) Foi só colocar o session start() no inicio e pronto. ;) td de bom!

  4. 4 Vagner Wolf
    Janeiro 9, 2009 às 8:08 am

    Obrigado, No meu caso utilizo dreamweaver e o erro aconteceu simplesmente por ter deixado a linha 1 em branco e iniciado o código a partir da linha 2.
    resultou em duas menssagens de erro:
    a primeira relatada e
    Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent

    Resolvido – Feliz 2009 para todos nós

  5. 5 Walter
    Janeiro 23, 2009 às 12:17 pm

    Opa,
    No meu caso era um espaço antes do include! vlw..

    Abç..
    paz,

  6. Fevereiro 4, 2009 às 10:38 pm

    Caaaara! Vc salvou meu dia =DÉ bom reforçar que o SESSION_START tem que vir antes de tuuuuudo msm na primeira linha da página.
    Mto bom post. Simples e direto! Parabéns.
    Valeeeeeeeuu

  7. Fevereiro 6, 2009 às 11:55 am

    Valeu, Paula Fernanda, sem tirar o merito do artigo, seu comentario foi na mosca.
    “SESSION_START tem que vir antes de tuuuuudo msm na primeira linha da página”
    até mais.

  8. 8 Brown
    Fevereiro 8, 2009 às 4:56 pm

    Cara. Simplesmente demais!! Como os colegas já disseram, Simples e direto…
    Vlw…. Salvou meu dia tb… Já estava pensando que iria endoidar…. Coloquei antes de um require que tinha …. Pronto…

  9. 9 adriano
    Fevereiro 9, 2009 às 2:27 am

    obrigado tambem salvou a minha

  10. Abril 13, 2009 às 5:30 pm

    Vlw tambem tava com este problema e coloquei
    <?php session_start();
    e resolvido vlw pelo post

  11. Abril 30, 2009 às 11:36 am

    Olá… estou com um problema que é o seguinte…

    Fiz um cabeçalho e um rodapé que são carregados nas páginas usando INCLUDE.

    Já tentei colocar o session_start(); em todos os lugares possíves para saber qual é o erro e não consegui identificar ainda…

  12. Abril 30, 2009 às 11:36 am

    Olá… estou com um problema que é o seguinte…

    Fiz um cabeçalho e um rodapé que são carregados nas páginas usando INCLUDE.

    Já tentei colocar o session_start(); em todos os lugares possíves para saber qual é o erro e não consegui identificar ainda…

    Alguém pode me ajudar???

  13. Maio 11, 2009 às 12:22 pm

    Ah valeu gente! O meu caso foi o que Jack disse…. também to montando um site que tem um index.php com vários includes…. foi só tirar o session_start() das páginas chamadas no include e deixar só no index…..

    Talvez seja isso que o Gustavo deva tentar fazer…. =)

  14. 14 Erik Assunção
    Maio 15, 2009 às 8:44 pm

    Muito obrigado, realmente nem o Notepad ou Dreamweaver mostrava os caracteres. Abri em um serviço de FTP online com opção de edição e o problema foi resolvido.

    Abraçõs,
    até mais…

  15. 15 Anderson
    Agosto 28, 2009 às 12:55 pm

    resolvi colocando como falaram, bem no to da pagina.
    Antes do , ai resolvel. Ainda não testei as funcionalidade mais um problema a menos. Valew Fernanda e parabens littleoak pelo POST.

    Exemplo do Codigo feito no DreamWeaver>

    //PS: esse tipo de declaração pode não funcionar em alguns servers talves seja bom mudar.

    Untitled Document


Deixe uma resposta




a