วิธีการปิดการใช้งานการป้องกันข้อผิดพลาดร้ายแรง (WSOD)?


12

การจัดการข้อผิดพลาดที่ร้ายแรงได้รับการแนะนำใน WordPress 5.1 และ 5.2

บางครั้งเรียกว่าการป้องกันหน้าจอสีขาวแห่งความตาย (WSOD)

เมื่อทำงานกับการติดตั้ง dev / local บางครั้งเราต้องการแบ่งไซต์ตามต้องการและหลีกเลี่ยงกระบวนการกู้คืนอีเมลสำหรับไซต์เมื่อทำงานภายในจุดปลายที่ได้รับการป้องกัน (ดูis_protected_endpoint()):

ไซต์กำลังประสบปัญหาทางเทคนิค โปรดตรวจสอบกล่องจดหมายอีเมลของผู้ดูแลระบบไซต์ของคุณ

เราจะปิดการจัดการข้อผิดพลาดร้ายแรงได้อย่างไร

คำตอบ:


15

เราสามารถแก้ไขเอาต์พุตboolของwp_is_fatal_error_handler_enabled()ฟังก์ชันได้สองวิธี:

คงที่

ตั้งค่าWP_DISABLE_FATAL_ERROR_HANDLERคงที่เป็นtrueภายในwp-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.phpลงในwp-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.