致命的なエラー処理は、WordPress 5.1および5.2で導入されました。
ホワイトスクリーンオブデス(WSOD)保護と呼ばれることもあります。
開発/ローカルインストールで作業しているときに、必要に応じてサイトを分割できるようにしたい場合があります。 保護されたエンドポイント( is_protected_endpoint()
を参照)内で作業する場合、サイトの電子メール回復プロセスを回避します。
サイトで技術的な問題が発生しています。手順については、サイト管理者のメール受信トレイを確認してください。
どうすれば致命的なエラー処理を無効にできますか?
wp_is_fatal_error_handler_enabled()
関数のbool出力を2つの方法で変更できます。
_WP_DISABLE_FATAL_ERROR_HANDLER
_ファイル内の_wp-config.php
_定数をtrue
に設定します。
_/**
* Disable the fatal error handler.
*/
const WP_DISABLE_FATAL_ERROR_HANDLER = true;
_
または
_define( 'WP_DISABLE_FATAL_ERROR_HANDLER', true );
_
_wp_fatal_error_handler_enabled
_ boolフィルターを使用します。
_/**
* 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
_定数の値をオーバーライドします。
また、定数disablingとのブールの混乱の可能性に注意してください。ただし、フィルターenablingを使用してください。
私のテストでは、must-useプラグインとしてのフィルターアプローチが期待どおりに機能しないため、代わりに定数を使用しています。うまくいけば、私はこれをさらに調査することができます。
カスタムdrop-inファイル_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
_をtrueに設定すると、WSOD保護は無効になります。これは仕様によるものです。 #46825 を参照