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

About these ads
Esta publicação foi postada em 1, PHP e marcada .

37 comentários em “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. André Barreto disse:

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

  3. Teka disse:

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

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

  5. Walter disse:

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

    Abç..
    paz,

  6. 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. Lindimar disse:

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

  9. adriano disse:

    obrigado tambem salvou a minha

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

  11. 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…

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

  13. 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. 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…

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

  16. Anatiel Santos disse:

    Galera, valew mesmo… um simples espaço em branco e todo o projeto desanda.

  17. André Ventura disse:

    Putz, esse artigo me salvou. Obrigado.

  18. Mateus Manosso Barszcz disse:

    Outra dica é colocar preferencialmente ao invés de … “<?php" !!!

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

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

  21. Givaldo Lins disse:

    Obrigado. Serviu direitinho.

  22. 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!

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

  24. Camila disse:

    Funcionou certinho!
    Valeu (:

  25. Perfeito… muito boa a explicação, isso é o importante. Explicar porque as coisas acontecem antes de exibir a solução. É assim que contribuimos para o conhecimento coletivo. Parabéns.

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

  27. 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!

  28. rfontanelli disse:

    Tava puto da vida aqui com esse erro, valeu pela ajuda!

  29. 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!

  30. 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!

  31. Erique Bomfim disse:

    kra!!! show…..muito obrigado mesmo pela dica…..o editor havia adicionado um caractere no inicio do arquivo “wp-config.php”

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

  33. Daniel Vieira disse:

    Muito obrigado!

    Era exatamente esse o problema que eu estava enfrentando e seu artigo me ajudou a soluciona-lo.

    Abraço!

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

  35. Sandro Galdino disse:

    Valeu!!!!

    Simplesmente coloquei o código no index onde contém os includes e tarammm, Funcionou!!

    Abraço

  36. 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 um comentário

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 / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s