У меня возникли трудности с настройкой контейнера Docker с phpfpm для передачи обработки ошибок моему php-приложению.
Любые фатальные исключения обрабатываются трассировкой стека xdebug (http://xdebug.org/docs/stack_trace) как 200 OK, однако я хочу, чтобы ошибки обрабатывались обработчиком php (я хочу реструктурировать ошибку как json и установить код ответа 500).
Если я устанавливаю это display_errors = Off
в php.ini, то получаю код 500, что хорошо, но ошибка не передается на уровень приложения (белый экран смерти).
В обоих случаях, описанных выше, ведение журнала работает так, как задумано.
Если говорить точнее, все функционирует нормально (happy path работает нормально), но когда я намеренно вызываю фатальную ошибку (это может произойти в будущем), у меня возникают проблемы.
Как настроить phpfpm/nginx, чтобы гарантировать обработку критических ошибок приложением php?
Конфигурация PHP-FPM (dockerfile):https://github.com/nglume/docker-phpfpm/blob/master/Dockerfile
Конфигурация nginx:https://github.com/nglume/docker-nginx/blob/master/config/nginx.conf
vhost:https://github.com/nglume/nglume/blob/master/vhosts/nginx/nglume-api.local.conf
Спасибо!
решение1
Оказалось, что проблема была в комбинации состояния пула phpfpm php_flag[display_errors]
: включеноиу приложения lumen не было зарегистрированного обработчика register_shutdown_function
(но был set_error_handler
набор).
Видетьhttps://laracasts.com/discuss/channels/lumen/lumen-debug-mode-not-showing-stack-traceдля получения дополнительной информации