c'è qualche output prima della funzione header? perché in tal caso non funzionerà.
Il che avrebbe la sua logica col funzionamento di ob_start(), che attiva il buffering impedendone l'output