web-dev-qa-db-fra.com

Trouver la source de notification/avertissement/erreurs efficacement

Lors du débogage de plugins ou de thèmes, je tombe souvent sur un avis/avertissement/erreur qui ne fournit pas vraiment d'informations de débogage utiles.

Notice: get_current_site_name is deprecated since version 3.9.0! Use get_current_site() instead. in /wp-includes/functions.php on line 3835

Je crois comprendre qu'il est nécessaire de changer get_current_site_name quelque part, mais il y a de nombreuses occasions où je ne sais pas où chercher. J'ai un taux de réussite de 75% en allant à la racine en sachant ce que font les thèmes et les plugins existants en arrière-plan, ce qui permet une recherche rapide et une solution. Cependant, les 25% restants, je dois vivre avec l’erreur, car j’ai peu de temps pour fouiller des centaines de fichiers.

Existe-t-il un moyen de déterminer le fichier de plugin/thème d'où proviennent réellement ces messages?

1
Jarmerson

C’est là que la règle consistant à éviter le gonflement s’applique le mieux. Vous devriez vous demander pourquoi vous avez autant d'erreurs générées avec le code que vous utilisez. En théorie, vous ne devriez pas corriger les erreurs, mais attendre que l'auteur le corrige comme si vous le répariez vous-même, vous bricoliez le plugin/thème.

Plus précisément, votre réponse est qu’il est probablement impossible d’obtenir une réponse meilleure que 90%. Vous pouvez utiliser le plugin " query monitor " pour obtenir une trace de pile, mais même cette trace n'aura qu'une valeur limitée pour une situation non triviale. Par exemple, vous pouvez obtenir un type d'erreur "index non défini" lors de l'accès à un élément de tableau, résultat d'un bogue d'accès à la base de données survenant lors de l'enregistrement d'une valeur et dont vous ne voyez les symptômes que lorsqu'il est utilisé.

Et comme la recherche et la correction d’erreurs non triviales n’est pas une mince affaire et qu’avoir des erreurs est toujours une passerelle vers des failles de sécurité ou des dysfonctionnements généraux du site, vous ne devez tout simplement pas utiliser de plug-ins et de thèmes qui vous laissent vous débrouiller seuls en ne disposant pas de mises à jour ponctuelles. ou bon soutien efficace.

2
Mark Kaplun

Vous pouvez effectuer une recherche dans les fichiers installés de différentes manières pour rechercher les occurrences du nom de la fonction qui donne les erreurs/avertissements. Voici 3 façons:

  1. Téléchargez tous les fichiers installés via FTP. Utilisez un éditeur de texte doté d'une fonctionnalité de recherche dans les fichiers qui permet de rechercher des sous-dossiers (par exemple, TextPad). Cette méthode est lente, à moins que vous ne conserviez déjà une copie locale, auquel cas c'est une méthode rapide.

  2. Connectez-vous à votre serveur via SSH et utilisez une commande de recherche à partir de la ligne de commande.

cd /home/USERNAME/web/DOMAIN/ (chemin sous l'installation)

fgrep -R "FUNCTION_NAME" public_html (où public_html est le répertoire d'installation)

  1. Utilisez un plugin qui recherchera dans tous les fichiers de plugin ou de thème installés dans votre zone d’administration, par exemple. WP BugBot (divulgation complète: écrite par votre serviteur réellement à cette fin.)

Je pense qu'il est également possible que les messages d'erreur fournissent plus d'informations sur l'erreur en modifiant la configuration de PHP ou les paramètres d'erreur, mais c'est une option plus avancée que je laisserai à d'autres recherches.

2
majick

Dans ces cas, mon dernier recours consiste à temporairement ajouter un appel à la PHP debug_print_backtrace () function au numéro de fichier/ligne indiqué dans le message d’avertissement.

En examinant le résultat de debug_print_backtrace(), vous pouvez voir la pile d’appels qui mène au message d’avertissement généré. Parfois, la pile d'appels est assez profonde et il faut encore un certain temps pour comprendre ce qui se passe.