Visita <a href="http://www.liquida.it/" title="Notizie e opinioni dai blog italiani su Liquida">Liquida</a> e <a href="http://www.liquida.it/widget.liquida/" title="I widget di Liquida per il tuo blog">Widget</a>
Seguimi su Twitter! Aggiungi il mio Feed!

php logo 300x158 Errore PHP: Cannot modify header information – headers already sent

E’ stato scritto tantissimo su questo comune errore PHP ma, in giro, ho notato che non c’è quasi mai una trattazione completa.

In primis diciamo che è un problema che sorge quando si usano funzioni di sessione del tipo session_start(), oppure funzioni di modifica delle intestazioni come header(), oppure ancora quando settiamo i cookie con setcookie().
Le cause:

  • Abbiamo usato una delle sopra citate funzioni dopo il tag <html> o comunque dopo aver impostato un output
  • Una linea bianca prima del tag di apertura <?php , anche un semplice spazio bianco, rappresenta un output
  • Nel file è incluso un BOM. Una piccola sequenza di byte che viene posizionata all’inizio di un flusso di dati di puro testo per indicarne il tipo di codifica Unicode

Soluzioni:

  • Le funzioni sopra citate vanno messe in testa al file PHP. Prima di qualsiasi altro codice.
  • Cancellare qualsiasi spazio bianco prima del tag di apertura. Potrebbe non essere uno spazio vuoto ma venire codificato dall’interprete PHP
  • Salvare il file con codifica UTF-8 senza BOM. Un buon editor come Notepad++ permette di farlo con semplicità.
  • Settare in php.ini il valore output_buffering=4096 (usarlo solo se necessario in quanto si rallenta il processo di output)
  • Iniziare lo script PHP con la funzione ob_start() (alternativo alla soluzione precedente) che attiva l’output_buffering senza stabilirne la grandezza

Link: funzioni di controllo del output in PHP

Un Commento a “Errore PHP: Cannot modify header information – headers already sent”

Lascia un Commento

Spam Protection by WP-SpamFree


Twitter Delicious Facebook Digg Stumbleupon Favorites More
Link consigliati

da Twitter

Cerca
Ultimi 5 commenti
  • claudio: per Ghiro 80 ti do’ il mio : ik0qdc@hotmail.it se per te va bene con la promessa che non lo divulgo....
  • ghiro80: salve Claudio come posso darti il mio indirizzo in maniera meno indiscreta?non vorrei che mi arrivassero 100...
  • claudio: Giovanni o Ghiro 80,quello che tu scrivi e’ interessante se mi dai l’indirizzo e-mail ti mando...
  • emanuele: ragazzi sto cazzo de pedro è un’emerita testa di cazzo io sono solo 19enne e volevo comprare una...
  • claudio: correggo: l’HRESULT è sempre lo stesso, sono i moduli che sono diversi…sono differenti...