Risolvere l’errore PHP session_start: Cannot send session

Oggi vediamo come risolvere un errore storico di PHP provocato dalla funzione session_start: Cannot send session cache limiter  headers already sent.

Descrizione dell’ errore

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

L’errore è dovuto al fatto che php pensa che ci sia un’altra sessione aperta dichiarata prima della funzione session_start. Questo è dovuto alla presenza di spazi, testo, caratteri, codice, o elementi in genere prima della funzione session_start.

Risoluzione del problema

Non è una scienza esatta, ma andate per tentativi (come piace a me =D ):

– Non usate l’indent del codice prima del session start, session start deve essere la prima istruzione del codice senza nessun elemento,testo,spazio o codice davanti.

Non lasciate spazi prima di <?php e dopo il tag di chiusura a inizio e in fondo al documento.

– Cambiate la codifica in ANSI o UTF-8 SENZA BOOM. In certi casi ha risolto. (per farlo potete usare notepad++ che ha già lo strumento di conversione integrato). Anche se è una soluzione che può sembrare strana in alcuni casi (Vedi Stackoverflow) molti utenti hanno risolto senza troppi sforzi.

– Se con il vostro editor sembrano non esserci spazi aprite il file con un semplice blocco note (non il ++) ed eliminate qualsiasi spazio,lettera,o elemento prima di session_start (anche gli indent del codice!).

Ovviamente la premessa più grossa per risolvere il problema è avere codice pulito e tecnicamente corretto (nel caso di un errore “strutturale” o di concetto del codice anche applicando tutte queste soluzioni non risolvereste).

Spero vi sia utile, a presto!

0 0 voti
Valutazione dell'articolo
Iscriviti
Notificami
guest

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

4 Commenti
Vecchi
Più recenti Le più votate
Feedback in linea
Visualizza tutti i commenti
Matteo
Matteo
13 anni fa

per l’errore “headers already sent ” è sufficiente inserire come prima riga in assoluto

e non ci saranno più problemi di sessione, per ulteriori info c’è sempre php.net!

http://php.net/manual/en/function.ob-start.php

Matteo
Matteo
Rispondi a  Riccardo Mel
13 anni fa

non ho messo il codice tra i code e non l’ha giustamente postato il codice era:

comunque ottimo lavoro questi articoli sono fantastici, ti salvano sempre nelle situazioni disperate =D

Marco
Marco
9 anni fa

Grazie, finalmente ho risolto il problema

Rimani Aggiornato
Nuove idee, zero Spam
Ti invieremo solo le ultime novità di articoli o nostri progetti.
Iscrivendoti accetti la nostra privacy poliicy. Una volta iscritto, ricordati di attivare l'iscrizione cliccando sul link ricevuto via mail.
4
0
Esprimete la vostra opinione commentando.x