Mi è capitato spesso nella mia carriera di programmatore PHP di trovarmi di fronte a questo errore:
Warning: Cannot modify header information - headers already sent by…
E’ un problema che incorre quando tentiamo di inviare informazioni header, dopo aver già mandato del contenuto ad una pagina: ad esempio se abbiamo scritto qualcosa e proviamo a fare un redirect.
In codice:
if($pippo)
header("location: pippo.php");
Ci sono vari modi per risolvere il problema, a seconda della situazione e delle vostre possibilità:
1. Per prima cosa provate a vedere se potete rifattorizzare il codice, in modo da fare prima il redirect e poi scrivere sulla pagina: magari è sufficiente un altro if e si risolve tutto.
2. Se abbiamo accesso al file di configurazione php.ini, basterà abilitare il buffering:
output_buffering = On.
3. Nel caso fossimo su un hosting che non ci permette questo tipo di modifiche, dovremo abilitare il buffering direttamente da codice. All’inizio della pagina php in questione scrivete:
4. Se nemmeno questo dovesse funzionare, dovremo ricorrere alle funzioni di php per il buffering della pagina. Inseriamo questa funzione prima del nostro codice:
Quindi alla fine della pagina inseriamo:
In questo modo avremo risolto i nostri problemi. Praticamente la prima funzione trattiene nel buffer tutto il contenuto della pagina, che solo alla fine verrà rilasciato come output. Sembrerebbe funzionare anche tralasciando la seconda funzione, ma credo che sia più corretto così.
Un’ultima curiosità. Nel mezzo delle due funzioni, potremo salvare in una variabile il contenuto del buffer tramite questo codice:
Spero che questo PHP trick vi torni utile. Alla prossima.




Ciao,
navigando alla ricerca di una guida per correggere il famigerato warning “Cannot modify header information”, sono capitato sul tuo blog. LA tua ottima guida,purtroppo non ha risolto il mio problema…
Fortunatamente sono riuscito a sistemare le cose semplicemente aprendo il file con il blocco note e salvando non come codifica UTF-8 ma come ANSI… evidentemente il mio editor (netbeans) inseriva qualche schifezza in apertura del file… cosicché la chiamata all’header non era più la prima istruzione della pagina e, di conseguenza, si generava l’errore…
Lo segnalo solo per completezza all’articolo che, comunque è davvero ottimo
Ciao e buona giornata
-JeKo-
Ciao Jeko, grazie per aver condiviso la tua soluzione, integrando il mio post
Ciao ragazzi, e grazie anche di essere passati sul mio blog.
In effetti c’ho sbattuto la testa non poco primo di provare quell’ultima soluzione …che per fortuna si è rivelata quella decisiva!
CIAO!!
[Comment ID #802 Will Be Quoted Here]
tra l’altro ho installato lo script in 2 domini e in uno solo dei 2 mi dà l’errore. quindi ci ho perso non so quanti notti in cerca di trovare l’inghippo!
be almeno ho risolto! meglio tardi che mai!
[Comment ID #800 Will Be Quoted Here]
Grazie per la… “testimonianza”, mi fa piacere che sei riuscito a risolvere. Quel warning è davvero tra i più antipatici!
Ciao, da tempo lotto contro questo problema e ci ho perso delle ore di sonno!
Io sono su hosting Aruba e ho risolto con il metodo 4.
Finalmente quel cavolo di errore è sparito dal mio guestbook!!!
ciao.
Scrivi info molto utili, mi sono abbonato subito ai feeds!