Utilisation

Une fois le plugin configuré et activé, il n'y a plus rien à appeler depuis votre code. Le plugin installe automatiquement les handlers PHP globaux et remonte les problèmes à votre place.

Ce qui est capturé automatiquement

Lorsque le plugin est activé avec une URL de serveur et une clé de projet valides, il enregistre trois handlers PHP globaux (via l'ErrorHandler du cœur) :

  • Exceptions non interceptées: tout Throwable qui atteint le gestionnaire d'exceptions de PHP est remonté.
  • Erreurs PHP: avertissements, notices et autres erreurs levées pendant la requête sont encapsulés en exceptions puis remontés. Le handler respecte la suppression par @ et votre niveau error_reporting, et laisse ensuite le gestionnaire natif de PHP s'exécuter : le comportement existant reste donc inchangé.
  • Arrêts fatals: à l'arrêt du script, le plugin inspecte la dernière erreur et la remonte si elle était fatale (E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR). C'est ainsi qu'une erreur fatale mettant fin à la requête parvient tout de même à votre tableau de bord.

Chaque rapport contient la classe, le message, le fichier et la ligne de l'exception, ainsi que la trace de pile complète par défaut (trace_limit vaut 0) ; une valeur positive de trace_limit tronque la trace à ce nombre de frames. La release configurée est jointe à chaque événement.

La remontée est conçue pour ne jamais casser votre site : si le serveur est lent ou injoignable, l'échec est absorbé silencieusement et la page continue de s'afficher.

Vérifier le bon fonctionnement

Après avoir enregistré vos réglages, provoquez une erreur inoffensive et confirmez qu'elle apparaît dans votre tableau de bord Quiet Guard pour le projet. Un moyen rapide consiste à ajouter temporairement un extrait à un thème ou à un petit plugin « must-use » :

php
add_action('init', function () {
    throw new RuntimeException('Quiet Guard test exception');
});

Chargez une fois n'importe quelle page du site, puis consultez les Issues du projet dans le tableau de bord, une RuntimeException portant le message « Quiet Guard test exception » devrait apparaître. Retirez l'extrait ensuite.

Si rien n'arrive, vérifiez à nouveau que :

  • Enabled vaut 1, et que Server URL et Project key sont renseignés ;
  • la Server URL est uniquement l'URL de base, sans chemin final ;
  • le serveur est joignable en HTTPS depuis l'hôte WordPress ;
  • le dossier du plugin a été construit avec composer install, de sorte que son dossier vendor/ existe (voir Installation).

Nettoyage des données sensibles

Avant qu'un rapport ne quitte le site, ses données de contexte passent par le nettoyeur du cœur, qui masque les valeurs par clé. Toute clé dont le nom contient l'un des termes suivants (correspondance par sous-chaîne sur le nom de clé, insensible à la casse, appliquée récursivement aux tableaux imbriqués) voit sa valeur remplacée par [scrubbed] ; une clé configurée password masque donc aussi user_password :

password, pwd, passphrase, token, secret, authorization,
cookie, referer, referrer, auth, api_key, nonce

Cela évite d'envoyer les identifiants évidents vers votre serveur. La liste de nettoyage est définie dans l'adaptateur WordPress et n'est pas modifiable depuis l'écran de réglages dans cette version.

Une seconde passe s'y ajoute, venue du cœur et sans réglage propre : les valeurs ayant la forme d'une adresse e-mail, d'un IBAN, d'un numéro de carte, d'un numéro de sécurité sociale ou d'un téléphone français sont masquées où qu'elles se trouvent, y compris dans le texte d'un message d'erreur, et le masque nomme ce qu'il a caché ([redacted:email]).

Point d'ingestion

Pour référence, les rapports sont livrés via une requête HTTPS POST vers :

{Server URL}/api/v1/ingest

authentifiée par la clé de projet en jeton Bearer. C'est la même API d'ingestion neutre vis-à-vis de la plateforme que celle utilisée par les clients Laravel et Symfony : un site WordPress apparaît donc à leurs côtés dans le même tableau de bord.

Étape suivante

Consultez la Mise à jour pour savoir comment actualiser le plugin.

Vous lisez la documentation WordPress Plugin v1.0.