내 PHP 응용 프로그램에 대한 오류 처리를 연기하기 위해 phpfpm을 사용하여 Docker 컨테이너를 설정하는 데 어려움을 겪고 있습니다.
모든 치명적인 예외는 xdebug 스택 추적(http://xdebug.org/docs/stack_trace)는 200으로 OK이지만 PHP 핸들러에서 오류를 처리하고 싶습니다(오류를 json으로 재구성하고 응답 코드를 500으로 설정하고 싶습니다).
php.ini에 설정하면 display_errors = Off
좋은 코드 500이 표시되지만 애플리케이션 레이어에 오류가 전달되지 않습니다(흰색 화면 사망).
위의 두 경우 모두 로깅이 의도한 대로 작동하고 있습니다.
명확히 말하면 모든 것이 정상적으로 작동하고 있지만(행복한 경로는 정상적으로 실행되고 있음) 의도적으로 치명적인 오류를 발생시키는 경우(향후 발생할 수 있음) 문제가 발생합니다.
PHP 애플리케이션에서 치명적인 오류를 처리하려면 phpfpm/nginx를 어떻게 구성해야 합니까?
PHP-FPM 구성(dockerfile):https://github.com/nglume/docker-phpfpm/blob/master/Dockerfile
nginx 구성:https://github.com/nglume/docker-nginx/blob/master/config/nginx.conf
가상 호스트:https://github.com/nglume/nglume/blob/master/vhosts/nginx/nglume-api.local.conf
감사해요!
답변1
문제는 phpfpm 풀 상태의 조합이 php_flag[display_errors]
켜져 있다는 것이 밝혀졌습니다.그리고루멘 애플리케이션에는 등록된 핸들러가 없습니다 register_shutdown_function
(세트가 있음 set_error_handler
).
보다https://laracasts.com/discuss/channels/lumen/lumen-debug-mode-not-showing-stack-trace더 많은 정보를 위해서