Nel php.ini ci sono più voci che ti permettono di decidere se puoi inviare headers dopo che l'invio dell'output è iniziato.

Quando quell'opzione mi permette di farlo io invio tranquillamente gli headers anche dopo l'invio dell'output.

Su server windows di aruba non funziona, su linux di aruba funziona. Non credo dipenda dall'OS ma solo da diverse impostazioni di php.ini
Ora non ricordo bene come si chiama la voce ma se la cerchi la trovi senza tanti problemi.. mi pare fosse qualcosa del tipo "headers after output"..