PHP 오류 로그가 기록되지 않을 때

PHP 설정에서도 오류로그를 활성화 하고, WP_DEBUG 를 true 로 켜서 오류내용을 보려고 해도 보이지 않을 때가 있죠.

심지어 서버의 PHP 오류 로그에도 기록되지 않아 어떠한 원인 때문에 사이트에 오류가 발생했는지 추적하기 어려운 경우가 종종 있는데요,

이러한 현상의 원인으로서 서버 설정이나 파일쓰기 권한등을 추측할 수 있겠지만, 위에 이야기 한 대로 서버 설정도 정상이며 Warning 등의 기본 로그는 작동하지만 치명적인(Critical/Fatal) 오류를 기록하지 못하는 경우에는 서버 설정 등 과는 다른 부분을 확인해야 합니다.

이 경우 대부분의 원인은 set_exception_hander() 를 통해 치명적인 오류를 가로채어 따로 관리하도록 하는 플러그인들 때문인데요,

여러 플러그인을 조합하는 방식으로 서비스 사이트를 구축중이거나 구축된 사이트를 운영하는 경우, 원인을 찾지 못해 난감한 경우가 있죠.

어느 플러그인에서 set_exception_hander 를 등록해서 사용하는지 자체를 찾기가 어렵기 때문입니다.

이러한 상황을 회피하여 오류로그를 일반적인 방법으로(wp-content/debug.log 등) 로그를 확인하려면 아래의 코드를 테마의 functions.php 에 넣어두면 WP_DEBUG 가 켜져있는 동안에는 이를 회피할 수 있습니다.

if ( defined('WP_DEBUG') && WP_DEBUG )
    restore_exception_handler();