09 diciembre 2016

Errores de programación: PhP

Este error es un ejemplo de cómo unas máquinas que, aparentemente, funcionan de manera del todo lógica, no se comportan de manera lógica.

En PhP, cuando se quiere que el intérprete dé información acerca de los errores, algo que es fundamental para un programador, es necesario saltarse la configuración por omisión del servidor. Para ello, es usual, con el propósito de asegurarse de que es posible cambiar la configuración, poner al principio del archivo PhP que se desea depurar, lo siguiente:

error_reporting(E_ALL);
ini_set("display_errors", 1);

El primero define los errores que van a mostrarse (todos) y el segundo, configura la directiva que hace que se muestren por pantalla.

Bien. Muchas veces, cuando se tiene un archivo llamado, por ejemplo, archivo_con_errores.php, sigue uno las especificaciones del manual (y recordad que eso de fiarse de la documentación no es buena práctica, a menudo), pone las dos líneas de código de antes al princpio de su archivo (sí, detrás de la etiqueta de apertura del modo PhP) y se encuentra que, aún poniendo errores a conciencia, el navegador te devuelve una pantalla vacía.

Entonces se va uno a los comentarios de php.net. Se encuentra uno de hace diez años o más que comenta que cuando le pasa lo que acabo de describir a él se le soluciona creando un archivo php nuevo, que voy a llamar depurador.php, donde escribe lo siguiente:

error_reporting(E_ALL);
ini_set("display_errors", 1);
include("archivo_con_errores.php");




Lo primero que pensé al verlo fue: tiene muchos años y lo que propone es absurdo. Está haciendo lo mismo que poner esas dos líneas delante del archivo, ya que el comando "include" agrega el contenido del archivo que se le pasa como argumento al fichero actual.

Pues sí, esto sí funciona. Incomprensible.

No hay comentarios: