Cómo arreglar errores con función header en PHP

Hace poco me encontré con un error que me dio algún dolor de cabeza darle solución. En algunas versiones de PHP la función header() no funciona y nos devuelve el siguiente warning:

Warning: Cannot modify header information - headers already sent …

Las funciones en PHP que envían o modifican encabezados HTTP deben ser invocadas antes de cualquier salida.

Leyendo en varios foros llegue a la conclusión que el problema era el siguiente: Espacios en blanco después de la etiqueta de cierre de mis archivos php (?>). Principalmente causado por:

Que se nos haya quedado algún archivo sin etiqueta de cierre (?>).

Que tengamos algún espacio después de esta etiqueta.

Que usemos algún editor de texto que inserte BOM en codificación UTF-8. El BOM (Byte Order-Mark) no se visualiza por la mayoría de los editores de texto. Es la secuencia de bytes EF BB BF, que es opcional y redundante para documentos codificados en UTF-8. Por tanto aunque creamos que no nos dejamos ningún espacio en blanco, estos bytes nos pueden estar dando problemas.

Solución que he encontrado al problema:

Pues después de varias pruebas sin éxito de dejar  mis ficheros php sin espacios en blanco y darme cuenta que la tarea podía llevarme horas. Busque algún script o alguna herramienta para automatizar la solución y he aquí phptags.

phptags es una herramienta que vuelve a escribir las etiquetas de cierre y apertura de nuestros ficheros hacia formas largas y cortas, pero también fácilmente soluciona el problema del espacio inicial y final (BOM).

Una vez instalado, nos dirigimos al directorio donde se encuentran nuestros ficheros php y ejecutamos la siguiente sentencia para eliminar las etiquetas de cierre de php (?>)

phptags --unclosed *.php

Una vez eliminadas todas las etiquetas de cierre de php (?>) volvemos a insertarlas eliminando los espacios en blanco que puedan haber quedado.

phptags --closed *.php

Esta tarea puede ser un poco pesada hacerla de directorio en directorio. Por tanto podemos usar los siguientes comandos para que recorra el directorio padre de nuestro proyecto php y de forma recursiva mire todos los subdirectorios buscando los ficheros php y aplicándoles el cambio.

find . –type d exec phptags --unclosed *.php {} ;

find . –type d exec phptags --closed *.php {} ;

0 comentarios para Cómo arreglar errores con función header en PHP

Deja un comentario




Si le ha parecido interesante nuestro artículo Cómo arreglar errores con función header en PHP dentro de la categoría PHP recuerde que puede suscribirse a nuestra dirección RSS,a nuestro newsletter o seguirnos en las redes sociales