2009-12-01 10 views
15

Esta pregunta se ha realizado antes de una manera más general. Quiero mostrar mensajes de error en una página en particular en mi servidor de producción, y no tengo acceso al archivo php.ini. ¿Cuál es la mejor manera de habilitar todos los errores y advertencias en una página PHP particular en su servidor de producción?Servidor de producción PHP: activar los mensajes de error

He intentado ERROR_REPORTING(E_ALL);.

Respuesta

32

Para permitir errores, debe utilizar error_reporting antes del punto donde aquellos se activan (por ejemplo, al comienzo de su script PHP):

error_reporting(E_ALL); 

Y para tener visualizado el error, usted debe configurar display_errors:

ini_set('display_errors', 'On'); 

(éste debe ser desactivada en un servidor de producción, lo que significa que podría tener para permitir de esta manera, incluso después de haber configure d error_reporting)


Por supuesto, todo esto se puede encapsular en un bloque de if, para asegurarse de que sólo se puede ver los mensajes de error - especialmente si usted está haciendo esto en un sitio web de producción en vivo; por ejemplo:

if ($_SESSION['is_admin']) 
{ 
    error_reporting(E_ALL); 
    ini_set('display_errors', 'On'); 
} 


Y para hacer las cosas un poco más bonita, también puede ser que desee configurar html_errors:

ini_set('html_errors', 'On'); 
+0

Me gusta la idea de activar los errores cuando el administrador está conectado, y cada vez que reviso el sitio puedo ver de inmediato lo que está mal sin tener que activar los errores. Gracias – andrew

+0

De nada (a veces también utilizo ese truco, es una manera fácil, mucho más fácil que pasar por los archivos de registro, de todos modos) :-) ¡Diviértete! –

+2

Agregué esta respuesta como la respuesta canónica a "¿Cómo activo los informes de errores?" en la wiki de la etiqueta PHP. –

1

Un método diferente todos juntos sería registrar un controlador de errores con: set_error_handler

De esta manera, puede elegir qué hacer con los errores: Envíelos por correo a la administración, muestre un mensaje de error amigable, inicie sesión en archivo/db, ...

+0

Eso suena interesante, enviarlos a mi correo electrónico sería particularmente útil, leeré un poco sobre eso, gracias – andrew

1

Otra cosa a tener en cuenta es que probablemente no solo desee mostrar errores, desea registrarlos en el archivo/base de datos. Solo mostrar errores a los usuarios en el entorno de producción no es suficiente; pedirles que informen sobre los problemas lo llevará a no saber qué le pasa a su servidor hasta que sea demasiado tarde. En su controlador base de errores y excepciones, asegúrese de tener una lógica que registre el problema (tanta información de depuración como sea posible: seguimiento de la pila, IP del usuario, navegador, versión de la aplicación, etc.) en un almacenamiento persistente.

4

realmente no debería mostrarlos en un servidor de producción. La mejor manera es crear algún sistema de registro.

¡Tenga en cuenta para que sea reutilizable!

Cuestiones relacionadas