Warning: Cannot modify header information – headers already sent by…

Publicado por Alejandro Escario en

¿Cómo solucionar este error?

Warning: Cannot modify header information – headers already sent by…

Antes de nada hemos de saber que este error aparece cuando intentamos modificar el «header» de una página web después de que éste haya sido ya enviado, razón por la cual hemos de hacer todos los cambios en la cabecera antes incluso de enviar cualquier etiqueta HTML, ya que esto provocaría el envío del «header».
Algunas etiquetas HTML típicas:

<html>
<head>
</head>
<body>
</body>

</html>

Pues bien, para solucionar este problema, he encontrado una función de php que habilita el uso del búfer de salida, lo cual quiere decir que mientras no se haya cerrado dicho buffer, el servidor no «escribirá» el código HTML resultante de interpretar el código php. para usar esta función, deberíamos dejar todo el código entre dos funciones, ob_start() y ob_end_flush(), de tal modo que se guarda toda la información el el búfer de desde la primera hasta la segunda función.

Un ejemplo:

<?php
	session_start();
?>

Mientras el código anterior daría un error como el del título, los dos siguientes presentan las posibles soluciones:

<?php
	session_start();
?>
<html>
<head>
</head>
<body>
</body>
</html>
<?php
	ob_start();
?>
<html>
<head>
<?php
	session_start();
?>
</head>
<body>
</body>
<?php
	ob_end_flush();
?>
</html>

La primera solución es sin duda la más sencilla, modificar los headers antes de que se imprima ninguna etiqueta, pero no siempre es tan fácil aplicar dicha solución, ya que, sobre todo cuando se trabaja mucho con cookies, no es factible en ocasiones (al menos sin complicarse mucho la vida) modificarlo al inicio del archivo, por lo que se puede optar por la segunda solución en estas ocasiones.

Categorías: ManualesProgramación

2 comentarios

Noemi · diciembre 2, 2011 a las 1:07 am

Es la primera vez que dejo un comentario, quiero agradacerte, ya que tu articulo me sirvio de mucho para solucionar el error,habia investigado y nada de las soluciones que se daban me sirvio. Me sacaste de un gran apuro
Muchisimas Gracias!!! 😉

    Alejandro Escario · diciembre 2, 2011 a las 11:48 am

    Para eso estamos! gracias por tu comentario

Los comentarios están cerrados.