Solucionar el problema «Headers already sent» de PHP
¿Cómo solucionar de forma segura "Headers already sent"?
Solucionar el problema «Headers already sent» de PHP. Cuando estamos programando con el lenguaje PHP, en algunos casos tenemos que interactuar con el lenguaje de marcas HTML, abrir y cerrar etiquetas PHP y HTML. Sin embargo, cuando se compila nuestro trabajo en el servidor suelo encontrar con errores que describiremos a continuación.
Warning: Cannot modify header information - headers already sent by /some/file.php:19 in /some/archivo.php on line 23
Otro ejemplo de este error que suele presentarse a menudo en nuestros proyectos.
Warning: Cannot modify header information - headers already sent by (output started at /home/bolve/public_html/adm/ordenar.php:8) in /home/bolve/public_html/adm/ordenar.php on line 28
¿Porque aparecen estos errores?
Porque nuestro código suele tener función de redirección header() y otros. Las funciones PHP que envían o modifican las cabeceras HTTP se deben ejecutar antes de que se haya empezado a enviar la página solicitada al usuario. Si no, se producirá el siguiente error:
Solucionar el problema «Headers already sent» de PHP
Las funciones de PHP que modifican las cabeceras HTTP son todas las que mencionaremos a continuación:
- header() / header_remove()
- session_start() / session_regenerate_id()
- setcookie() / setrawcookie()
A) Detectar que las causa y como solucionarlo.
1. Incrustar código HTML antes del código PHP (ejemplo: main.php)
<!DOCTYPE html> <?php // Aquí ya no puedes modificar las cabeceras
2. Espacios en blanco delante de la etiqueta de inicio del PHP
<?php // ERROR: ¡Si hay 1 espacio en blanco delante de la etiqueta de inicio del PHP!
3.Espacios en blanco no intencionados después de la etiqueta de cierre «?> «
¿Si por accidente se agrega un espacio en blanco después de la etiqueta de cierre “?>”, también puede producir este error al compilar el fichero. ¿La solución más idónea consiste en eliminar estos espacios al final de la etiqueta de cierre “?>” en los archivos PHP.
B). Segunda manera de corregir estos errores.
Una vez corregido los errores de los espacios en blanco y todavía genera este tipo de error, es hora de aplicar esta segunda opción muy funcional, probaremos añadiendo estas funciones al inicio de la etiqueta del PHP.
// Colocar antes de cualquier código: <?php ob_start();?>
Ahora también al final del Código PHP
// al terminio del fichero <?php ob_end_flush(); ?>
Con este arreglo, se pueden enviar los “headers” en cualquier lugar del documento, sin obtener estos errores mencionados líneas arriba.
Le mostraremos en ejemplo completo de cómo debe quedar el código implementado para los espacios en blanco y aplicando función.
En esta zona no debe haber espacios en blanco <?php echo "mis códigos"; ?> Aca también no debe haber espacios en blanco.
Aplicando función predefinida
// Colocar antes de cualquier código: <?php ob_start();?> <?php echo "Mis Códigos!; ?> <?php ob_end_flush(); ?> // Colocar al final del documento PHP:
Más: Headers already sent: ¿Como Corregir este error?
Conclusión
Espero que esta breve explicación les ayude en solucionar problemas en sus proyectos que estén realizando. saludos y éxitos.
Gracias por su ayuda, me estaba volviendo loco
Uffs, capo, funciona al 100%, gracias, muchas gracias 🙂
Muchas gracias, me funcionó de maravilla utilizar al inicio y al final del código
Genial
Gracias por visitar el Blog
Hola Nestor:
Quiero incorporar algunos servicios en mi Web http://www.infovinos.es... que información necesitarías para hacerme un presupuesto… gracias.
Un cordial saludo
Juan Manuel García
Hola Juan Manuel,
Escribeme a mi correo nestor@www.baulphp.com y detallame mediante un archivo de Word o PDF los cambios que desees realizar y de acuerdo a ese documento le realizare un presusupesto.
Atentamente,
Nestor Tapia