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





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

Comente

  • tj:
    " Felipe, A mensagem que você recebe é a do... "
    Post: Upload de arquivos em PHP (uma única página)
  • felipe:
    " boa tarde, sou novato! copiei este script e diz que... "
    Post: Upload de arquivos em PHP (uma única página)
  • tj:
    " Alberto, O que está acontecendo é que o Apache recebe o... "
    Post: Upload de arquivos em PHP (uma única página)
  • Alberto:
    " O script funciona e é bem legal, entretanto esta... "
    Post: Upload de arquivos em PHP (uma única página)
  • Joyce:
    " POW!!! muito bom "
    Post: 50 Sites para downloads gratuitos de vetores
    

TWITTER
    • Sem itens