Estoy trabajando en un desarrollito con PHP, y me surgió el siguiente error:
Warning: Cannot modify header information - headers already sent by (output started at /servidor/archivo.php:07) in /servidor/directorio/archivo.php on line 666
Buscando por ahí, leí que es un un error conocido como “whitespace problem” o problema del espacio en blanco. Se debe a que algunos editores de texto agregan espacios en blanco o líneas vacías al final de un archivo tras ser editado.
Aparentemente se da muy seguido ya que devuelve bastantes resultados en Google, tanto con algunas palabras clave del error como con “whitespace problem php“. Dejo la solución por si a alguno le pasa. Es tan simple como remover el espacio en blanco al final del archivo (el que que describe en “output started at”) en la línea que se indica.
Me pasó una vez sola por ahora con Geany, pero nunca había pasado. De todas formas, lo edité con Vim por las dudas, y el problema no volvió a presentarse.
En los comentarios Imzyos nombra una situación más donde se puede dar este error y Tuxie explica más en detalle el problema.
Si te gustó éste post, podés apoyar a PicandoCódigo a través de PayPal!

Los contenidos de éste sitio se encuentran publicados bajo
Imzyos
Junio 18, 2008 a las 5:03 amMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9) Gecko/2008052906 Firefox/3.0
Vaya si es un problema, a mi me tuvo un rato buscándole la solución, como nota, si bien en general la solución es buscar el espacio en blanco, hay otro forma en que se puede este warning de php y es que algunos editores agregan el BOM al archivo y al no ser capaces de mostrarlo permanece invisible
jk
Junio 18, 2008 a las 11:49 amMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20080311 (Debian-1.8.1.13+nobinonly-0ubuntu1) Galeon/2.0.4 (Ubuntu 2.0.4-1ubuntu1)
Ok, veamos de nuevo el error, detengamonos un momento en esta parte “on line 666″…
Que me ha corrido un frio a todo lo largo de /dev/backbone…
Esto es claramente obra de algun ente maligno que vive en /dev/shadows…
cuidadin cuidadin…

tuxie_
Junio 18, 2008 a las 12:22 pmMozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9) Gecko/2008061521 Iceweasel/3.0 (Debian-3.0~rc2-1)
En realidad el problema esta al comienzo del archivo, no al final. El tema es que primero manda los headers, luego la data que ve el usuario. Si ya se mandó data, no puede “volver hacia atras” por eso tira ese error.
Es muy común que suceda por un espacio en blanco o una línea en blanco al comienzo del archivo en cuestión y te roba varias horas y dolores de cabeza encontrarlo. Otra perlita de PHP…
Saludos!
fernando
Junio 19, 2008 a las 5:22 amMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.14) Gecko/20080404 Iceweasel/2.0.0.14 (Debian-2.0.0.14-2)
jk: JAJAJA! Me mató lo de /dev/backbone y /dev/shadows! En verdad lo escribí yo de gusto, no había error en esas líneas…
Imzyos, tuxie, gracias por extender el conocimiento, edité el post e hice referencia a sus comentarios.
Saludos y gracias por comentar!
David Martínez
Junio 19, 2008 a las 7:19 amMozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
Una buena práctica es nunca cerrar con ?> los archivos, ya que el intérprete de PHP no lo requiere. De ese modo nunca tendrás espacios al final. Se recomienda, por ejemplo, en el “Coding Standard” de Zend Framework: http://framework.zend.com/manual/en/coding-standard.php-file-formatting.html
Sanva
Junio 20, 2008 a las 10:30 amMozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14
PHP es flexible, muy flexible, y eso permite que pueda ser usado de una forma poco correcta… pero eso no es un defecto atribuible al lenguaje.
Lo que yo recomendaría es utilizar PHP para lo que sirve, programar. Programar lo que hace la aplicación, no lo que se ve… es decir, utilizar un sistema de plantillas para la presentación del contenido, para la vista de la aplicación. Ver un sólo
echo,printfo similar por el código es sin duda un ejemplo de que esa aplicación está mal diseñada.fernando
Junio 23, 2008 a las 4:44 pmMozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008061602 Iceweasel/3.0 (Debian-3.0~rc2-1)
David, Sanva, gracias por los aportes. En verdad no he programado mucho en PHP, más que un semestre en la carrera, y alguna otra cosa chica como proyecto personal.
Pero me gusta bastante el lenguaje y el entorno web, así que en algún momento pienso ponerme en serio con PHP. Todavía tengo mucho que aprender al respecto.
Estoy de acuerdo con eso, es el arma de doble filo de los lenguajes flexibles.
Diego Alejandro Velez
Septiembre 5, 2008 a las 1:55 pmMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.2)
a muchas personas les suele pasar que crean un nuevo archivo php en dreamweaver o frontpage y escriben el codigo php dentro de las etiqutas es cuando les puede sacar tambien este error “Warning: Cannot modify header information - headers already sent by (output started at /servidor/archivo.php:07) in /servidor/directorio/archivo.php on line 666″ el codigo php para un email por ejemplo debe ser sin etiquetas html.