PHP Ejemplos

Solucionar el problema “Headers already sent” de PHP

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:
Solucionar el problema Headers already sent de PHP
Solucionar el problema Headers already sent de 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.

Descarga 156 Sistemas PHP & MySQL

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Publicaciones relacionadas

2 comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba