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).

37 comentários sobre “Cannot send session cookie – headers already sent by (SOLUÇÃO)

  1. Jack disse:

    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. Vagner Wolf disse:

    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

  3. Brown disse:

    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…

  4. Gustavo disse:

    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…

  5. Gustavo disse:

    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???

  6. Elaine Cristina disse:

    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…. =)

  7. Erik Assunção disse:

    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…

  8. Anderson disse:

    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

  9. Marcio disse:

    No meu caso era porque não tinha no topo das páginas, INCLUSIVE, na página que contém o formulário para login do utilizador. :)

    Parece que temos de ter o nosso session start também nas páginas onde temos o nosso formulário, alguém poderá confirmar por favor?

    Abraço
    Márcio

  10. Vinicius disse:

    Pesquisando em diversos foruns, li várias matérias…

    A maioria dizia que o problema éra relacionado ao Dreamweaver ou Word, que éra necessário mudar o código de UTF sem BOM… no Notepad ++ ….
    Diziam tambem que éra necessário remover as linhas em branco do arquivo configuration.php ….

    E diziam que funcionavam, mas não funcionou.

    E você meu amigo foi o único que de uma maneira simples, focada e rápida solucionou meu problema, se precisar de alguma coisa só falar brow..

    Abraço e parábens.

  11. Adriano disse:

    Pessoal, a solucao foi simples, bastou inserir o codigo
    session_start();
    Na 1a pagina e as demais q preciso usar o conteudo do Session, simples assim!

  12. Fernando disse:

    Gente, o meu problema era causado por linhas em branco depois do ?> final do arquivo connecta.php , que vinha num include antes do sessionstart. Estranho mas era isso sim. Abraços.

  13. Alexandre disse:

    Comigo, tive que editar a página principal com um editor on-line e retirar os caracteres especiais que apareceiam antes da tag <?php. Nem o Dreamweaver, nem o bloca de notas, nem word pad mostraval tal caracteres especiais. Talvez ao enviar o documento pro server é que eles são inseridos. De qualquer forma, somente pelo editor on-line que consegui removê-los e assim, fazer a bagaça funfar… Olhe como tava: "<?". Foi tirar esses caracteres esquisitos e foi de boa.

  14. Alexandre disse:

    O WebDesign fez os arquivos de Layout no DreamWeaver com UTF-8.
    Não funcionava por nada e nem consegui visualizar qualquer caracter estranho lá.
    Criei um arquivo pelo Eclipse e colei o código lá. Funcionou!

  15. Luiz Henrique Kowalski disse:

    Realmente, nunca tinha imaginado usar o buffer de saída pra isso… A documentação realmente cita que o buffer bufferiza tudo que não for Header, ou seja, saídas comuns são suprimidas, mas o cabeçalho que manda o cookie da sessão é enviado perfeitamente.

    Muito obrigado!

  16. Thierry disse:

    Pessoas,

    Assim como teve um post assim, resovi reintera-lo e ressaltá-lo; atente-se ao seguinte caso:

    Se o seu site/sistema foi feito através de includes chamados pela index, ou seja, o que altera na navegação é somente o meio do site, o session_start deve vim na 1º linha da index, o porque é claro: Quem inicia a sessão é a index e como todas as outras são chamada por ela basta que exista apenas uma sessão aberta.

    Parabens pelo tuto. Deus abençoe a todos!

  17. Washington Lira disse:

    Parabens Irmao !!! Solucao simples e objetiva, foi direto ao assunto…

    E ja tava pra matar o pessoal do meu host que nao sabia resolver isso…

    e aqui vc foi direto.. outros blogs o cara enrola umas quinze paginas pra poder falar da solucao..

    Comigo o Dream Weaver tava me passando a perna… rsrsrs eu tinha deixado um monte de linhas em branco
    antes do inicio de cada pagina…

    Vale continue assim..

  18. Lucas Lima disse:

    Quando se trata de paginas montadas a partir de vários includes no index.php, não é necessário aplicar o session_start() nas outras paginas que utilizam variaveis de sessão. Basta apenas incluir o session_start na pagina index.php.

    Parabéns pelo post

  19. Thais disse:

    Muito Bom…

    O meu caso foi o meus que o Jack (anos atrás):

    ‘No 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.’

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alteração )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alteração )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alteração )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alteração )

Conectando a %s