Tengo dificultades para configurar un contenedor acoplable con phpfpm para diferir el manejo de errores en mi aplicación php.
Cualquier excepción fatal está siendo procesada por el seguimiento de la pila xdebug (http://xdebug.org/docs/stack_trace) como 200 OK, sin embargo, quiero que el controlador php maneje los errores (quiero reestructurar el error como json y establecer el código de respuesta en 500).
Si lo configuro display_errors = Off
en php.ini obtengo un código 500 que es bueno, pero no se pasa ningún error a la capa de aplicación (pantalla blanca de la muerte).
En ambos casos anteriores, el registro funciona según lo previsto.
Para ser claros, todo funciona normalmente (el camino feliz funciona bien), pero cuando intencionalmente provoco un error fatal (podría suceder en el futuro), tengo problemas.
¿Cómo debo configurar phpfpm/nginx para asegurarme de que la aplicación php maneje los errores fatales?
Configuración PHP-FPM (archivo docker):https://github.com/nglume/docker-phpfpm/blob/master/Dockerfile
configuración de nginx:https://github.com/nglume/docker-nginx/blob/master/config/nginx.conf
servidor virtual:https://github.com/nglume/nglume/blob/master/vhosts/nginx/nglume-api.local.conf
¡Gracias!
Respuesta1
Resulta que el problema era una combinación de estado del grupo phpfpm php_flag[display_errors]
activadoyla aplicación lumen no tenía un controlador registrado register_shutdown_function
(sí tenía un set_error_handler
conjunto).
Verhttps://laracasts.com/discuss/channels/lumen/lumen-debug-mode-not-showing-stack-tracepara más información