Önemli hata (WSOD) korumasını nasıl devre dışı bırakabilirim?


12

Önemli hata işleme WordPress 5.1 ve 5.2'de tanıtıldı.

Bazen Beyaz Ölüm Ekranı (WSOD) koruması olarak adlandırılır.

Geliştirici / yerel yüklemelerde çalışırken bazen siteleri gerektiği gibi bozabiliriz ve örneğin korumalı bir uç noktada çalışırken site için e-posta kurtarma işleminden kaçınabiliriz (bkz. is_protected_endpoint()):

Site teknik zorluklar yaşıyor. Talimatlar için lütfen site yöneticisi e-posta gelen kutunuzu kontrol edin.

Ölümcül hata işlemeyi nasıl devre dışı bırakabiliriz?

Yanıtlar:


15

Biz değiştirebilir bool çıktısını wp_is_fatal_error_handler_enabled()iki şekilde fonksiyonu:

Sabit

WP_DISABLE_FATAL_ERROR_HANDLERSabit değeri dosya trueiçinde olarak ayarlayın wp-config.php:

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

veya

define( 'WP_DISABLE_FATAL_ERROR_HANDLER', true );

filtre

wp_fatal_error_handler_enabledBool filtresi kullanın :

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

notlar

Bilete bakın # 44458

wp_fatal_error_handler_enabledFiltre değerini geçersiz kılar WP_DISABLE_FATAL_ERROR_HANDLERsabit.

Ayrıca, sürekli devre dışı bırakma, ancak filtre etkinleştirme ile olası bir bool karışıklığına dikkat edin .

Testlerimde, filtre yaklaşımı, mutlaka kullanılması gereken bir eklenti olarak, beklendiği gibi çalışmıyor, bu yüzden bunun yerine sabiti kullanıyorum. Umarım bu konuya daha yakından bakabilirim.

Bir de özel ekleyebilir açılır kutusunu dosyaya fatal-error-handler.phpiçine wp-contentdizine ( src geçersiz kılmak için,) WP_Fatal_Error_Handlergerektiği gibi sınıf. Farklı bir sınıf adı kullanmalıyız ve handle()yöntemi kayıtlı kapatma işlevi olarak tanımlamalıdır .

Devre dışı bırakmanın basit bir örneği, varsayılan hata işleyici sınıfını, hiçbir şey yapmayan özel bir sınıfla geçersiz kılmaktır:

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

PHP 7+ 'da anonim sınıfın da işe yaradığı görülüyor:

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

WP_Fatal_Error_HandlerGerekirse varsayılan sınıfı da genişletebilir .

Sonra WP_SANDBOX_SCRAPINGsabit var. Bkz. # 46045

Ayar WP_DEBUGgerçek olarak edecektir değil WSOD korumasını devre dışı. Bu tasarım gereğidir. Bkz # 46825

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.