Solucionando aviso de erro Warning: session_start()

Buenas pessoal, um erro relativamente comum para quem está programando em PHP é Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at …)

Na internet vão se encontrar muitas respostas e soluções para solucionar esse erro, até colocar um “@” no inicio da linha que está dando esse erro, o que é um erro mais grave do que a própria mensagem.

Vou dar uma breve síntese do que é o problema:

O “session_start()” cria uma sessão baseada em uma variável passada via GET ou um COOKIE, Normalmente o cabeçalho do HTML (<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> …) cria e envia os headers(cabeçalhos) e depois de enviado o compilador do PHP não consegue mais iniciar a “session”.

A solução é simples: coloque o session_start() antes de qualquer conteúdo da página. Note que o PHP é interpretado em sequencia de escrita, ou seja, se você tiver um “include”, “require” ou qualquer outra coisa do tipo antes do erro deve ser considerada a possibilidade de colocar nesse arquivo.

Exemplo: A página com erro é a índex.php mas no início da índex.php tem um include de header.php. O session_start() deve ser colocado no início de header.php, pois é o primeiro código a ser executado pelo compilador.

Esse erro pode ser causado por vários outros motivos, mas esse, como eu havia dito, é o mais comum.

Espero ter ajudado. Qualquer dúvida posta aí.





26 Comentários para “Solucionando aviso de erro Warning: session_start()”



  1. Obrigado mano, estava rodando aki procurando o erro, pq o session_start() estava dentro do header.php



  2. Olá
    Gostaria de saber por que ocorre esse erro no script abaixo
    Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at /home/objetivoea/domains/objetivoead.com.br/public_html/pasta/header.php:7) in /home/objetivoea/domains/objetivoead.com.br/public_html/pasta/restrito.php on line 3

    Warning: Cannot modify header information – headers already sent by (output started at /home/objetivoea/domains/objetivoead.com.br/public_html/pasta/header.php:7) in /home/objetivoea/domains/objetivoead.com.br/public_html/pasta/restrito.php on line 42

    Encotrei num site que seu eu colocasse o codigo: “output_buffering = on” num php.ini, resolveria, e realemnte no sericodr que eu estava, resolveu, mas ao migrar pra outro, continou dando o mesmo erro.

    CODIGO ARQUIVO restrito.php

    0)
    $MM_referrer .= “?” . $QUERY_STRING;
    $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . “accesscheck=” . urlencode($MM_referrer);
    header(“Location: “. $MM_restrictGoTo);
    exit;
    }
    ?>

    CÓDIGO header.php

    Só Vídeos




  3. Qualquer informaão mdan pro meu email ed.direito@gmail.com



  4. Se alguem puder me ajudar, entre em contato, que passo os arquivos, aqui nao deu pra colocar os codigo.



  5. Ednei Queros,
    Ao que parece você está tentando criar um header depois que ele já foi criado. Provavelmente no seu novo servidor você não tem acesso ao php.ini.
    Tenta colocar o header(“Location: “. $MM_restrictGoTo); antes de todo o código.

    O que você está tentando fazer com esse código ?? Uma consulta no BD ???



  6. obrigado, usei o que passou e realmente funcionou, parabéns….



  7. Obrigado ótima dica sou iniciante e estava quebrando a cabeça com isso obrigado pela ajuda! parabéns!





  8. Guilherme Altéia :

    Cara, muitíssimo obrigado pela dica!!! Agora funcionou!



  9. Obrigado, sua dica funcionou. Li tantas bobagens sobre como resolver esse problema dos ‘entendidos’ de programação, e sua solução simples foi o que funcionou.



  10. Mudei de hospedagem e me deparei com esse problema
    fiz um site em php puxando conteudo de outras paginas php com include.php e com sua ajuda percebi meu erro,
    Que eu colocava em todos as subpaginas de conteudo o session_start() e era necessario apenas na principal.
    Obrigado Sucesso



  11. cara vlw mesmo, tava pesquisando um solução na web e nenhuma deu certo, mais o que voce passou me ajudou e deu certo pra min. obrigado



  12. Meu amigo estou dês das 16h00 até agora 00h22 procurando uma solução para esse erro e quando achei seu artigo levei um minuto para resolver o problema com sua explicação.

    Valeu mesmo.
    Abraços.



  13. Muito obrigado mesmo !! Passei o dia inteiro procurando essa resposta e alternativas e vc foi a salvação. Obrigado ! Ajudou muito !!! Parabéns !!



  14. Muito obrigado, me ajudou.



  15. MUITO OBRIGADO!! DICA DE OURO!!!

Comente

  • pedro:
    " valeu!!!!!!!!!!!!!!!!!!! era o que eu... "
    Post: Como acessar a versão mobile do seu site através do javascript
  • Redex redes de proteção:
    " Parabéns pelo post muito importante... "
    Post: Código 9 ameaça segurança infantil na Internet
  • MARTINHO SENGIA:
    " MUITO OBRIGADO!! DICA DE OURO!!! "
    Post: Solucionando aviso de erro Warning: session_start()
  • Lucas Oli:
    " Muito obrigado, me ajudou. "
    Post: Solucionando aviso de erro Warning: session_start()
  • Alexandre:
    " Muito obrigado mesmo !! Passei o dia inteiro... "
    Post: Solucionando aviso de erro Warning: session_start()
    

TWITTER

    Warning: array_slice() expects parameter 1 to be array, null given in /nfs/c05/h04/mnt/73042/domains/add-digital.com.br/html/wp-content/themes/ADD/sidebarblog.php on line 138
    • Sem itens