Miguel Ángel Jiménez Consultor ecommerce, inmerso en las entrañas de la red

19Jul/118

Solución a Cannot send session cookie – header already sent

Imágen codigo fuenteBuenaventurado programador, si has llegado aquí ha de ser por dos razones:

  • Estoy superbien posicionado, cosa que dudo.
  • Llevas mucho tiempo buscando una solución a este tremendo error... Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /path/to/my/file.php:1) in /path/to/my/file.php on line 2

Tanto si es una opción como la otra, te voy a contar que solución encontré yo al error a mi caso particular.

La situación era: un proyecto que funcionaba bien, se modifica el fichero de configuración del proyecto para añadir un nuevo recipiente de email para recibir el log de error, se suben una série de modificaciones y puf, a tomar viento el proyecto. Se haga lo que se haga no hace más que aparecer el Warning:session_start(). Cómo bien dice el error "Header already sent" nos ponemos a buscar esos "sent" que supuestamente están molestando... y no aparecen por ningún lado.

Como locos repasando fichero a fichero, modificación a modificación y no aparece nada raro. Restauramos los ficheros modificados por los anteriores y seguimos sin respuesta... Seguimos buscando y en cada página el Warning: session_start() erre que erre tocando las narices.

Al cabo del rato el compañero se acuerda de la modificación del fichero de configuración y a diferencia del resto, modificados en Netbeans, lo ha modificado en Notepad... ¡maldito Windows y su procesador de texto de la muerte! Resulta que al guardarlo, añadió caracteres raros al fichero alterando su codificación... Total, se crea un nuevo fichero, se le vuelca el contenido, se sube y voilá, la página vuelve a vivir. Ni rastro del Warning:session_start() ni de sus "Header already sent".

Posibles soluciones ante un problema de Warning:session_start(), que es un error de noob:

  1. Revisar la codificación de fichero, en nuestro caso todo está en UTF-8.
  2. Restaurar los ficheros originales para acotar la búsqueda a las nuevas modificaciones.
  3. Comprobar que realmente "Cannot send session cookie - headers already sent by" signifique precisamente eso y la hayáis liado parda por propia voluntad.
  4. Hecharse las manos a la cabeza y dar vueltas en círculo maldiciéndo a toda creación habida y por haber. (Ésta es altamente recomendable)

Conclusiones y acciones después de sufrir un problema de noob:

  1. Has perdido casi una mañana de trabajo, tienes permiso para fustigar a tu compañero de trabajo sin remordimientos.
  2. Windows caca, notepad caca y compañero que usa notepad teniendo Netbeans ¡NOOB!
  3. Mira el lado positivo, ¡no volverás a perder una mañana buscando el error! Són estas las ocasiones que nos hacen aprender de verdad.

¡And this is everything! Espero que seáis pocos los que tengáis que recurrir esta solución para el Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by... y muchos los que os aprendáis el error.

Comentarios (8) Trackbacks (0)
  1. A mí me sirvió. Muchas Gracias 😉

  2. A mí también me ha servido. Había editado el wp-config.php de wordpress con el bloc de notas y la había liado. Lo he vuelto a editar y limpiar con ultraedit y todo ok.

    Gracias, creo que me has ahorrado un buen dolor de cabeza 🙂

  3. bien esta solucion no es mala aunque de verdad no es la primera ves q la leo a mi nunca me a funcionado ademas uso DW y el por defecto te coloca todo en utf-8 mas creo es un error de configuración del hostin pues en local no me da problema pero al subirlo empienzan los lios , mi solucion aunque poco etica pero como se que mi programación no tiene problemas pues esta mas que revisada, chequeada y comprobada en su funcionamiento opte por colocar error_reporting(0); asi no sale el mensajito fastidios y de igual forma funciona mi programa jejeje … miguel estas bien posicionado eres la 3 opción al buscar el problema en google XD, suerte si alguien sabe como configurar el hosting avise

  4. En mi caso lo solucione declarando la codificación antes del session_start. por ejemplo, si lo tenéis codificado en utf-8 agregar: header(‘Content-Type: text/html; charset=utf-8’); antes del session_start. Espero que a alguien le sirva 😀

  5. Hermano, me has salvado el día, y ahorrado un monton de tiempo. muy bueno el aporte.


Leave a comment



Aún no hay trackbacks.