функция header может не работать, если был вывод перед ней.
Тут есть несколько вариантов:
- Перед открывающим тегом <?php нет никаких символов?
- Может кодировка UTF-8 с BOM?
- Может этот файл подключается в другом файле, где уже есть какой-то вывод?