2008-12-01 8 views
21

¿Cuál es el mejor método para ocultar los errores de php en el navegador?La mejor manera de suprimir los errores de php en los servidores de producción

¿Sería utilizar el siguiente:

ini_set("display_errors", 1); 

Cualquier mejores consejos prácticos serán bienvenidos, así!

Estoy registrando los errores, solo quiero asegurarme de que establecer el valor display_errors en off (o 0) no evitará que se registren los errores.

+0

Haga lo que dije y sus errores no se mostrarán, pero se registrarán. –

+0

Me gusta la palabra "Mejor" que la "Mejor". – kta

Respuesta

46

La mejor manera es, por supuesto, registrar sus errores en lugar de mostrarlos o ignorarlos.

Este ejemplo registrará los errores en syslog en lugar de mostrarlos en el navegador.

ini_set("display_errors", 0); 
ini_set("log_errors", 1); 

//Define where do you want the log to go, syslog or a file of your liking with 
ini_set("error_log", "syslog"); // or ini_set("error_log", "/path/to/syslog/file"); 
+0

Como aviso en reemplazo de "syslog", puede colocar una ruta de archivo y escribir el registro en la ubicación que necesite. –

3

Suponiendo que usted está en control del archivo php.ini, se pueden hacer estos cambios a nivel mundial dentro de ese archivo en lugar de tener el código ini_set por ahí en todos sus archivos php (que quizás se olvide de poner en una de sus archivos un día, lo que podría ser malo en la producción).

1

También puede utilizar .htaccess de Apache para registrar los errores sin tocar el código:

<IfModule mod_php5.c> 
    php_flag  display_errors Off 
    php_flag  log_errors  On 
    php_value  error_log  logs/errors 
</IfModule> 
+0

Prefiero usar php.ini que httpd.conf, será más claro –

0

La mejor manera? Corrige los errores!

Si necesita una solución temporal rápida, está bien desactivar display_errors, pero asegúrese de que los está registrando en algún lugar, porque de lo contrario la configuración hará que los errores sean graves/parciales.

1

Desafortunadamente, los archivos de distribución de PHP envían un mensaje mixto sobre el manejo de mensajes de error. El archivo predeterminado php.ini tiene algunas configuraciones adecuadas para servidores de producción y otras para servidores de desarrollo. Debe activar todos los errores en dev (error_reporting = E_ALL y display_errors = On) y desactivar en prod (display_errors = off pero punto log_errors en algún lugar). Sin embargo, haz tu mejor esfuerzo para asegurarte de que no haya errores (o que se manejen).

2

establece una variable de entorno en su máquina de desarrollo. luego puede verificar su entorno al comienzo de su código para asegurarse de estar en el entorno de desarrollo. luego puede establecer el nivel de informe de errores de PHP, utilizando la función error_reporting().

if (isset($_ENV['MY_APP_MODE']) && ($_ENV['MY_APP_MODE'] == 'devel')) { 
    error_reporting(E_ALL); 
} else { 
    error_reporting(0); 
} 
Cuestiones relacionadas