Encuentra usuarios de Twitter en tu ciudad con LocaFollow

votarWarning: session_start(): Cannot send session cookie - headers already sent by…

Autor: aartiles | Archivado en: PHP el día 29/Oct/2009

Hoy os traigo un mini tip de PHP para solucionar un problema bastante común y escasamente documentado, o al menos yo tardé un rato en encontrar solución.
Se trata del error:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /path/to/my/file/tienda.php:1) in /path/to/my/file/tienda.php on line 2

Este error de PHP suele suceder cuando se intenta modificar el header de la página y ya se ha enviado algún carácter al buffer. Por ejemplo si ya hemos impreso un texto en la página e intentamos enviar una cookie o redirigir hacia otra página esto implicará una modificación de las cabeceras del protocolo HTTP y obtendremos el error anterior.

Normalmente sucede cuando te dejas un carácter regado en alguno de los includes que uses o algún warning o notices que se esté imprimiendo antes, y esto te puede dar su trabajo encontrarlo.

Pero lo que me sucedió a mi es que por alguna razón mis archivos tenían unos caracteres invisibles al inicio. Después de una largo rato buscando, el mítico Foros de Web me dio la solución. El problema es que algunos editores al guardar un archivo con codificación UTF-8 añaden al principio del archivo 3 caracteres hexadecimales, lo cual genera dicho error.

La solución es muy simple, un editor hexadecimal como Free Hex Editor Neo que tiene una versión gratuita con la que podrás abrir el archivo eliminar esos tres caracteres iniciales y guardarlo

Free Hex Editor Neo

Free Hex Editor Neo

Descarga: Free Hex Editor Neo

Alfredo ArtilesSoy Alfredo Artiles, Co-Fundador de equipo24, e24Presenter y e24Apps. Mi pasión es el AJAX, SEO, SEM y emprender todo lo que se me ponga por delante. Si me necesitas estoy 24x7 en Twitter @aartiles24.

Tags: , , , ,
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • LinkedIn
  • Meneame
  • MySpace
  • Technorati
  • TwitThis
Posts Relacionados

6 Comentarios on “Warning: session_start(): Cannot send session cookie - headers already sent by…”

  1. #1 Bitacoras.com dijo 7:27 pm el Octubre 29th, 2009:

    Información Bitacoras.com…

    Valora en Bitacoras.com: Hoy os traigo un mini tip de PHP para solucionar un problema bastante común y escasamente documentado, o al menos yo tardé un rato en encontrar solución. Se trata del error: Warning: session_start() [function.session-start]:…


  2. #2 Ángel Luis Quesada Nieto dijo 7:41 pm el Octubre 29th, 2009:

    Hombre, hay varias opciones además de esa…

    Si lo vas a volcar a un sistema Unix puedes trabajar en ISO todo el rato y luego pasar a UTF8 con el comando “iconv”.

    Otra opción, en Unix abres el archivo con un editor de textos, como por ejemplo VI y borras esos caracteres, que en Unix se ven perfectamente.

    Y cambia de IDE para trabajar si te mete esos caracteres al programar en UTF8, jejeje


  3. #3 aartiles dijo 7:53 pm el Octubre 29th, 2009:

    Pues en realidad los archivos no los generé yo, sino que son de un cliente al que le migramos un sistema hacia nuestros servidores.

    No conocía las soluciones en Unix, gracias por la aportación ;)


  4. #4 hackmaskate dijo 7:22 pm el Noviembre 13th, 2009:

    jajaja… que buen post ;) me salvo de no tener mas ese Warning asqueroso jajaja.

    Muchas Gracias.


  5. #5 snet dijo 12:27 pm el Noviembre 18th, 2009:

    Esos tres caracteres son el BOM de UTF-8. El editor vi de Unix NO los muestra porque los interpreta. La mayor parte de editores tampoco los muestran. La opción de un editor hexadecimal es muy buena idea. En mi caso los quité con Notepad++ convirtiendo el archivo a “UTF-8 sin BOM”.

    Se trata de un bug de PHP por el que muestra el BOM, cuando debería interpretarlo al igual que hacen los editores de texto (como vi).

    Por cierto, el BOM indica la codificación del archivo.


  6. #6 Enrique Reyes dijo 4:03 pm el Noviembre 19th, 2009:

    Gracias por este aporte me ha ayudado mucho, pues tenia toda una noche buscando la solucion. Se agradece
    Saludos y Bendiciones



Deja un comentario.