Comment désactiver la protection contre les erreurs fatales (WSOD)?


12

La gestion des erreurs fatales a été introduite dans WordPress 5.1 et 5.2.

Il est parfois appelé la protection de l'écran blanc de la mort (WSOD).

Lorsque nous travaillons sur des installations de développement / locales, nous souhaitons parfois pouvoir casser les sites selon les besoins, et par exemple éviter le processus de récupération des e-mails pour le site lorsque vous travaillez dans un point de terminaison protégé (voir is_protected_endpoint()):

Le site rencontre des difficultés techniques. Veuillez vérifier la boîte de réception de votre administrateur de site pour obtenir des instructions.

Comment désactiver la gestion des erreurs fatales?

Réponses:


15

Nous pouvons modifier la sortie booléenne de la wp_is_fatal_error_handler_enabled()fonction de deux manières:

Constant

Définissez la WP_DISABLE_FATAL_ERROR_HANDLERconstante truedans le wp-config.phpfichier:

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

ou

define( 'WP_DISABLE_FATAL_ERROR_HANDLER', true );

Filtre

Utilisez un wp_fatal_error_handler_enabledfiltre bool:

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

Remarques

Voir billet # 44458

Le wp_fatal_error_handler_enabledfiltre remplacera la valeur de la WP_DISABLE_FATAL_ERROR_HANDLERconstante.

Faites également attention à une éventuelle confusion booléenne avec la désactivation constante mais l' activation du filtre .

Dans mes tests, l'approche du filtre, en tant que plug - in indispensable , ne fonctionne pas comme prévu, j'utilise donc la constante à la place. J'espère que je pourrai approfondir cette question.

On peut également ajouter un fichier de dépôt personnalisé fatal-error-handler.phpdans le wp-contentrépertoire ( src ), pour remplacer la WP_Fatal_Error_Handlerclasse selon les besoins. Nous devons utiliser un nom de classe différent et il doit définir la handle()méthode comme la fonction d'arrêt enregistrée .

Un exemple simple pour le désactiver serait de remplacer la classe du gestionnaire d'erreurs par défaut par une classe personnalisée qui ne fait rien:

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

La classe anonyme en PHP 7+ semble également fonctionner:

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

Il pourrait également étendre la WP_Fatal_Error_Handlerclasse par défaut si nécessaire.

Ensuite, il y a la WP_SANDBOX_SCRAPINGconstante. Voir # 46045

La définition de la valeur WP_DEBUGtrue ne désactive pas la protection WSOD. C'est par conception. Voir # 46825

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.