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
Your language
Italiano flagCinese (Semplificato) flagInglese flagFrancese flagTedesco flagRusso flagSpagnolo flagUngherese flag
Link consigliati

da Twitter

Cerca
Ultimi 5 commenti
  • Salvatore: Ciao a tutti, sicuramente ho trovato gli stessi venditori che “decantate” tutti, il...
  • Sergio Gandrus: @NY Se installi xampp lite poi avrai l’ambiente (apache-php-mysql) dove far girare Joomla. I...
  • enzo: Scusatemi sto acquistando una macchina dalla seguente società trovata su autoscout24, ACTIVE TRADING LTD,...
  • NY: ciao, ho creato un sito joomla su un pc, poi l’ho salvato su HD, dal momento che non posso più utilizzare...
  • steno: problema risolto grazie a tutti dell’aiuto ciao.
Categorie