PHP notifica errores en respuesta a varias condiciones de error internas. Estas se pueden utilizar para señalar varias condiciones diferentes, mostrándose y/o registrándose si fuera necesario.
Cada error que genera PHP incluye un tipo. Existe una lista de dichos tipos, junto con una breve descripción de su comportamiento y sus posibles causas.
Si no se establece un manejador de errores, PHP manejará cada error que ocurra
según su configuración. Los errores que se notifican y los que se
ignoran se controla mediante la directiva
error_reporting
de php.ini, o durante la ejecución llamando a
error_reporting(). Sin embargo, se recomienda encarecidamente
establecer la directiva de configuración, ya que algunos errores pueden ocurrir
antes de comenzar la ejecución de un script.
En un entorno de desarrollo debería establecerse siempre
error_reporting
a E_ALL
, debido a que es necesario reconocer y corregir los
problemas generados por PHP. En producción, se podría establecer esta directiva a
un nivel de menor verbosidad como
E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
, aunque
en muchos casos E_ALL
también es apropiado, ya que puede
proporcionar advertencias precoces de problemas potenciales.
Lo que PHP hace con estos errores depende de dos directivas más de php.ini.
display_errors
controla si el error es mostrado como parte de la salida del script. Esta
debería estar siempre deshabilitada en un entorno de producción, ya que puede incluir
información confidencial tal como contraseñas de bases de datos, aunque a menudo es útil
habilitarla en desarrollo debido a que asegura la notificación inmediata de problemas.
Además de mostrar errores, PHP puede registrarlos cuando la directiva
log_errors
está habilitada. Esta registrará cualquier error en el fichero o registro del sistema
definido por
error_log
. Esta directiva
puede ser extremadamente útil en un entorno de producción debido a que se pueden registrar
los errores que ocurran y generar informes basados en ellos.
Si el manejo de errores predeterminado de PHP es inadecuado, también se pueden manejar muchos tipos de error con un manejador de errores propio mediante set_error_handler(). Mientras que algunos tipos de error no se pueden manejar de esta forma, aquellos que sí se pueden lo hacen de la manera en que su script vea apropiada: por ejemplo, se puede emplear para mostrar al usuario una página de error personalizada y luego notificar más directamente mediante un registro, tal como el envío de un correo electrónico.