Richiamando il codice da un file a parte questo problema non si verifica.
Io credo invece che anche il problema si verifica comunque in quanto l'output viene inviato comunque prima dell'header. Con il buffering puoi risolvere questi problemi e inserire funzioni di output dove ti pare.