Configurar PHP para que muestre los errores

In: php

12 oct 2009

php error warning 300x275 Configurar PHP para que muestre los erroresQuiero hacer una entrada breve, que explique, resuma y muestre las diferentes opciones que nos da PHP a la hora de mostrar los errores. Determinaremos los diferentes niveles de filtrado de error que hay,

Primero de todo, hay que explicar que PHP tiene la opción de mostrar o ocultar todos los errores que se produzcan. Cuando estemos en la fase de desarrollo o de testing de la aplicación, nos interesará que la opción esté activa; y si es producción, de cara al usuario no nos interesará que reciba información de errores. La variable ser llama ‘display_errors‘, y se puede modificar desde el archivo php.ini, o en ejecución con la función ini_set.

	// Activar errores
	ini_set('display_errors', 'On');
	ini_set('display_errors', 1);

Existe otra variable llamada ‘display_startup_errors‘, de la cual no he encontrado mucha información, pero trata sobre mostrar o no los errores que se producen en la secuencia de encendido de PHP. Son errores distintos de los que se muestran con ‘display_errors’ activada, pero ambas variables se pueden modificar de la misma manera.

Bién, una vez activada la opción de mostrar errores, hay que determinar el nivel de errores que se quieren mostrar. Para ello, hay que conocer los distintos niveles que hay:

  • E_ERROR: Errores graves (fatal error) que detienen inmediatamente la ejecución. PHP entiende el código, pero no puede ejecutarlos. Por ejemplo, cuando se llama una clase o función que no existe.
  • E_WARNING: Errores leves (warning) que no detienen la ejecución del código. Te sirven para avisarte de que ha seguido la ejecución, pero ha habido un error. Puede ser que, a causa del warning, después se produza un fatal error.
  • E_PARSE: Errores sintácticos de parseo (syntax error). Típico error de falta un punto y coma, o un paréntesis, … seguramente en la línea anterior a la indicada en el error.
  • E_NOTICE: Avisos o notas de sugerencias o detalles (notices). Muy útil para depurar una aplicación y poder ver variables no inicializadas, vacías, …
  • E_ALL: Todos los anteriores.
  • E_STRICT: este nivel vino en PHP5, y contiene los errores del uso de funciones obsoletas, haciendo que el código tenga que ser más rígido usando los mejores estándares de PHP. No esta incluido en el nivel E_ALL, pero con PHP6, E_STRICT si que estará incluido.

Los nombres de los niveles son constantes. Existen otros niveles, pero menos importantes. Para aplicar el nivel, hay las mismas dos opciones que antes: a través del parámetro error_reporting del archivo php.ini, o modificar el valor en ejecución con las funciones error_reporting o ini_set. Aquí dejo los usos o ejemplos más comunes, y que más pueden interesar:

	ini_set('display_errors', 'On');
 
	// Valor por defecto en PHP
	// Muestra todos los errores menos las notificaciones
	error_reporting(E_ALL ^ E_NOTICE);
 
	// Muestro todos los errores
	error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
	error_reporting(E_ALL);
	error_reporting(-1);
 
	// Muestro todos los errores, incluso los estrictos
	error_reporting(E_ALL | E_STRICT);
 
	// No muestra ningún error
	error_reporting(0);
 
	// También se puede usar la función ini_set
	ini_set('error_reporting', E_ALL);

Solo falta comentar que se puede configurar otros aspectos relacionados con los errores de PHP, modificando otras variables del php.ini, relacionadas con los errores. Puede ser útiles: guardar los errores en logs, dar formato a los mensajes de error,…

Vía Emezeta y Carsonified.

2 Comentarios en Configurar PHP para que muestre los errores

Jonathan

13 octubre 2009 a las 22:14

Oye Delegado tenemos que hablar de algo serio… a ver cuando me pasas tu email que no lo encuentro por ningun lado

Orlando Flores

27 julio 2012 a las 18:50

La imagen está original!

Formulario de Comentario

Página 1 de 11