Solução do erro session_start() no PHP

Olá pessoal, hoje vou falar sobre um erro chato que costuma infernizar a vida dos programadores php:

Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent…

Quem nunca passou por isso? Se não passou, as chances são grandes de acontecer. Sempre busquei soluções através de fóruns e sites e várias pessoas falavam que uma das causas desse problema é o fato da declaração “session_start()” não ser a primeira declaração do meu código php.

Pois bem, realmente isso pode ser uma das causas, porém, no meu caso em específico não era esse o problema veja a figura a seguir:

Continuei a busca pela solução e sempre encontrei a mesma resposta, até  o momento que encontrei um fórum gringo a solução.

Tentando traduzir “Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent…”, seria algo do tipo “Não pode ser enviado a sessão porque algo já foi enviado pelo cabeçalho blá blá blá…”

Então, o quê que acontece, muitas pessoas que programam em php salvam as páginas no formato unicode UTF-8 com assinatura (BOM)  e o que seria essa assinatura?

Toda página tem um tipo de codificação e hoje os programas para programação php utilizam o formato UTF-8 com assinatura. Essa assinatura é interpretada pelo navegador antes mesmo de interpretar o código php ou html, por isso ocorre esse erro de session_start().

UTF-8 = é um tipo de codificação Unicode de comprimento variável criado por Ken Thompson e Rob Pike. Pode representar qualquer carácter universal padrão do Unicode, sendo também compatível com o ASCII. Por esta razão, está lentamente a ser adotado como tipo de codificação padrão para email, páginas web, e outros locais onde os caracteres são armazenados.

Um exemplo disso vai a figura abaixo retirada de um print do Dreamweaver CS4:

Vejam que no caso do DWCS4 já vem marcada como default a opção, para alterar segue a figura abaixo:

E como solucionar?

Abra suas páginas, depois pressione Ctrl+j(isso no caso de utilizar o DWCS4) e desmarque a opção de “Incluir assinatura unicode (BOM)” conforme figura acima, confirme, depois verifique se o erro persiste, é bem provável que não.

Caso você não utilize o DWCS4 não se preocupe, provavelmente o programa que você utiliza tem alguma opção parecida, uma outra ferramenta também que pode ser usada é o Notepad++ para converter para unicode UTF-8 (Without BOM).

Espero ter ajudado!

Abraços e até a próxima.

Sobre Alexandre Belchior Medeiros

Bacharel em Análise de Sistemas

  1. MH-Santos

    Finalmente alguém que explicasse, perdi foi muito tempo nesses fóruns

  2. Lucas

    Cara muito obrigado.

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

%d blogueiros gostam disto: