Alguno elementos en php requieren que no se envie nada al navegador antes de ser invocados, es el caso de las sesiones y los headers, antes de invocar la función headers() no debes tener ninguna salida al navegador esto es:
- ningun echo, print, print_f o similar,
- ninguna libreria que genere una salida.
- antes del primer segmento php <?php no debe haber espacios en blanco o algun caracter que se pueda enviar de manera automática al navegador. (ni dentro de librerias).
verifica si no se esta generando alguna salida antes del header()