Quiero registrar cada error fatal, incluso tiempo de espera y otros E_ERRORS. Yo uso set_error_handler y shutdown function, pero con el último no puedo tener stacktrace. ¿Hay alguna forma de tenerlo?PHP: seguimiento de pila de registro para errores FATAL en producción
Quiero registrar errores fatales en un servidor de producción para ayudar a resolver errores que ocurren solo en producción. Lo sé, xdebug en servidores de desarrollo debe ser suficiente, pero no lo es. ¿Tal vez podamos usar xdebug con el mínimo de opciones activadas, o una versión eliminada de él para agregar el seguimiento de la pila al registro de errores?
Este código imprime la información de error si ocurre un error, incluso un tiempo de espera.
<?php
function shutdown()
{
$a=error_get_last();
if($a!==null) print_r($a);
}
register_shutdown_function('shutdown');
Tenga en cuenta que me tiró en el ** ** E_USER_ERROR en el '$ fatals' array, pero en realidad puede manejarse con éxito mediante un controlador de error personalizado. – rdlowrey
Ok, estaba pensando en un módulo de PHP que acaba de atrapar la stacktrace para errores fatales, como xdebug pero más ligero. Mi búsqueda es cómo tener más información sobre los errores fatales en la producción para ayudar a corregirlos. –
@ CédricGirard Ah, ya veo.Creo que la gran mayoría de los errores fatales son del tipo que pueden eliminarse durante la fase de desarrollo ... el resto son condiciones extraordinarias (como quedarse sin memoria, romper el servidor con un garrote en mitad de la solicitud, etc.). En estos casos, siempre he encontrado que el método anterior proporciona información suficiente para el registro. No he probado para ver si funciona con errores FATAL (creo que debería), pero podrías intentar agregar una llamada a ['debug_print_backtrace'] (http://www.php.net/manual/en/function. debug-print-backtrace.php) dentro de su controlador de apagado para información de rastreo – rdlowrey