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





22 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

Comente

  • Chiru Holocene:
    " Eu estava justamente tentando colocar... "
    Post: Por que não colocar música de fundo em website?
  • Marcus:
    " Valeu pela dica, estava precisando... "
    Post: Nova funcionalidade do Google – busca usando imagens
  • Dalmi junior(Djrock):
    " Excelente dica…..grato "
    Post: Como usar o mp3 player do Google em seu site
  • jackson william:
    " cara vlw mesmo, tava pesquisando um... "
    Post: Solucionando aviso de erro Warning: session_start()
  • joao carlos:
    " Mudei de hospedagem e me deparei com esse... "
    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