치명적 오류 (WSOD) 보호를 비활성화하는 방법은 무엇입니까?


12

치명적 오류 처리는 WordPress 5.1 및 5.2에서 도입되었습니다.

WSOD (White Screen Of Death) 보호라고도합니다.

개발 / 로컬 설치 작업을 수행 할 때 필요에 따라 사이트를 중단하고 보호 된 엔드 포인트 내에서 작업 할 때 사이트에 대한 이메일 복구 프로세스를 피하려고 할 때가 있습니다 (참조 is_protected_endpoint()).

사이트에 기술적 인 어려움이 있습니다. 지침은 사이트 관리자 이메일받은 편지함을 확인하십시오.

치명적 오류 처리를 어떻게 비활성화 할 수 있습니까?

답변:


15

두 가지 방법으로 함수 의 부울 출력을 수정할 수 있습니다 wp_is_fatal_error_handler_enabled().

일정한

파일 내 에서 WP_DISABLE_FATAL_ERROR_HANDLER상수를 설정 하십시오.truewp-config.php

/**
 * Disable the fatal error handler.
 */
const WP_DISABLE_FATAL_ERROR_HANDLER = true; 

또는

define( 'WP_DISABLE_FATAL_ERROR_HANDLER', true );

필터

wp_fatal_error_handler_enabled부울 필터 사용 :

/**
 * Disable the fatal error handler.
 */
add_filter( 'wp_fatal_error_handler_enabled', '__return_false' );

노트

티켓 # 44458 참조

wp_fatal_error_handler_enabled필터는 값보다 우선 WP_DISABLE_FATAL_ERROR_HANDLER상수.

또한 상수의 발생 가능한 부울 혼란을 조심 불가능 하지만 필터가 가능 .

필자의 테스트에서 필수 플러그인 으로 필터 접근 방식 이 예상대로 작동하지 않으므로 대신 상수를 사용하고 있습니다. 잘만되면 나는 이것을 더 조사 할 수있다.

필요에 따라 클래스 를 재정의하기 위해 사용자 정의 드롭 인 파일 fatal-error-handler.phpwp-content디렉토리 ( src )에 추가 할 수도 있습니다 WP_Fatal_Error_Handler. 다른 클래스 이름을 사용해야하며 handle()메소드를 등록 된 종료 함수 로 정의해야합니다 .

이를 비활성화하는 간단한 예는 기본 오류 처리기 클래스를 아무 것도 수행하지 않는 사용자 지정 클래스로 재정의하는 것입니다.

<?php
class WPSE_Fatal_Error_Handler {
    public function handle() {}
}
return new WPSE_Fatal_Error_Handler;

PHP 7+의 익명 클래스도 작동하는 것 같습니다.

<?php
return new Class(){
    public function handle() {}
};

WP_Fatal_Error_Handler필요한 경우 기본 클래스를 확장 할 수도 있습니다 .

그런 다음 WP_SANDBOX_SCRAPING상수가 있습니다. # 46045 참조

설정 WP_DEBUG사실로하는 것입니다 하지 WSOD 보호를 해제합니다. 이것은 의도적으로 설계된 동작입니다. # 46825 참조

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.