Si el código es el mismo tenés razón en estar perplejo ya que los warning no cortan la ejecución de tu código.
El problema maś importante pareciera radicar en el envío de headers. Hacé una pequeña prueba, añadí antes que nada en tu archivo, justo después de la apertura de la etiqueta PHP:
y al final de todo justo antes del cierre de la etiqueta PHP:
Código PHP:
ob_end_flush();
Si fuera un tema de headers, debería solucionarse con este "parchecito" (aunque lo recomendable es tener código limpio y no enviar headers donde no corresponde).
Probalo y me contás!