{"id":230624,"date":"2022-12-04T16:45:00","date_gmt":"2022-12-04T13:45:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230624"},"modified":"2022-12-04T16:45:42","modified_gmt":"2022-12-04T13:45:42","slug":"lire-et-comprendre-les-journaux-derreurs-de-wordpress-partie-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/lire-et-comprendre-les-journaux-derreurs-de-wordpress-partie-1\/","title":{"rendered":"Lire et comprendre les journaux d&rsquo;erreurs de WordPress, partie 1"},"content":{"rendered":"\n<p>Alors que nous continuons \u00e0 regarder ce que signifie \u00eatre <strong><a href=\"https:\/\/tommcfarlin.com\/tag\/the-independent-wordpress-developer\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">un d\u00e9veloppeur WordPress ind\u00e9pendant<\/a><\/strong>, les outils n\u00e9cessaires et les diff\u00e9rentes strat\u00e9gies qui peuvent am\u00e9liorer nos comp\u00e9tences, j&rsquo;ai parl\u00e9 des diff\u00e9rentes constantes, plugins et outils pour nous aider.<\/p>\n<p>Si vous venez de tomber sur cet article, je vous recommande de consulter <strong><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/outils-de-debogage-wordpress-natifs-qui-ne-necessitent-pas-dide\/\" title=\"mon guide des outils de d\u00e9bogage WordPress natifs\">mon guide des outils de d\u00e9bogage WordPress natifs<\/a><\/strong> ainsi que le reste des articles de la s\u00e9rie <strong><a href=\"https:\/\/tommcfarlin.com\/tag\/the-independent-wordpress-developer\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">jusqu&rsquo;\u00e0 pr\u00e9sent.<\/a><\/strong><\/p>\n<p>Apr\u00e8s tout, je trouve important que nous travaillions tous sur la m\u00eame base \u2013 ou quelque chose de \u00e9troitement li\u00e9 \u2013 lorsque nous parcourons ces informations.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-163025-61e7490c88078.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-163025-61e7490c88078.png\" alt=\"Lire et comprendre les journaux d&#039;erreurs de WordPress, partie 1\"><\/a><\/p>\n<p>En fin de compte, utiliser un outil comme <strong><a href=\"https:\/\/xdebug.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Xdebug<\/a><\/strong> est indispensable, mais il faut travailler jusqu&rsquo;\u00e0 cela (pour les curieux, <strong><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/utiliser-xdebug-avec-valet-et-wordpress\/\" title=\"j&#039;ai \u00e9crit un petit guide\">j&rsquo;ai \u00e9crit un petit guide<\/a><\/strong> \u00e0 ce sujet il y a un peu plus d&rsquo;un an).<\/p>\n<p>Pour l&rsquo;instant cependant, commen\u00e7ons par les bases. Dans le post pr\u00e9c\u00e9dent, je suis parti avec la d\u00e9claration suivante:<\/p>\n<blockquote>\n<p>Dans le prochain article, nous commencerons \u00e0 examiner ce qui est n\u00e9cessaire pour examiner le journal des erreurs g\u00e9n\u00e9r\u00e9 par WordPress et comment comprendre les informations que nous voyons.<\/p>\n<\/blockquote>\n<p>Et c&rsquo;est ce que je veux examiner aujourd&rsquo;hui parce que, si rien d&rsquo;autre, cela vous donnera quelque chose de pratique sur lequel travailler.<\/p>\n<h2>Comprendre les journaux d&rsquo;erreurs de WordPress, partie 1<\/h2>\n<p>Avant d&rsquo;aller trop loin dans cela, je veux r\u00e9pondre \u00e0 une question qui a \u00e9t\u00e9 soulev\u00e9e par un membre du site.<\/p>\n<p>A savoir, on m&rsquo;a demand\u00e9 :<\/p>\n<blockquote>\n<p>Quand allons-nous nous pencher sur les principes orient\u00e9s objet\u00a0?<\/p>\n<\/blockquote>\n<p>Bien que j&rsquo;en ai parl\u00e9 un peu <strong><a href=\"https:\/\/tommcfarlin.com\/tag\/oop-fundamentals\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dans une s\u00e9rie pr\u00e9c\u00e9dente<\/a><\/strong>, c&rsquo;est quelque chose que je travaille \u00e0 couvrir plus en profondeur plus tard dans cette s\u00e9rie.<\/p>\n<p>Cela dit, cependant, commen\u00e7ons \u00e0 regarder les journaux d&rsquo;erreurs.<\/p>\n<h3>Configuration de vos constantes<\/h3>\n<p>Si vous n&rsquo;avez pas configur\u00e9 les constantes dans votre fichier <strong>wp-config.php<\/strong>, je vous recommande de le faire maintenant car cela vous donnera le plus haut niveau de granualit\u00e9 lors de l&rsquo;examen des probl\u00e8mes qui pourraient survenir.<\/p>\n<p>Si vous n&rsquo;avez pas rattrap\u00e9 votre retard, assurez-vous de lire <strong><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/outils-de-debogage-wordpress-natifs-qui-ne-necessitent-pas-dide\/\" title=\"cet article\">cet article<\/a><\/strong> (et si c&rsquo;est le cas, assurez -vous que <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/426e02bcfc411d43be6715b3e84ead7e#file-11-wp-config-debug-full-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">les constantes suivantes<\/a><\/strong> sont d\u00e9finies dans votre fichier de configuration)\u00a0:<\/p>\n<pre><code>&lt;?php\ndefine( 'WP_DEBUG', true );\ndefine( 'WP_DEBUG_LOG', true );\ndefine( 'WP_DEBUG_DISPLAY', true );\n@ini_set( 'display_errors', 1 );\ndefine( 'SCRIPT_DEBUG', true );\ndefine( 'SAVEQUERIES', true );<\/code><\/pre>\n<p>Une fois ceux-ci en place, vous avez tout ce dont vous avez besoin non seulement pour voir les informations \u00e0 l&rsquo;\u00e9cran, mais \u00e9galement dans le journal de d\u00e9bogage que WordPress g\u00e9n\u00e9rera.<\/p>\n<h3>O\u00f9 est le journal\u00a0?<\/h3>\n<p>Selon la nature de votre environnement, cela peut varier ; cependant, dans la plupart des cas, vous trouverez <strong>debug.log<\/strong> dans le r\u00e9pertoire <strong>wp-content<\/strong> situ\u00e9 au- dessus des r\u00e9pertoires <strong>plugins<\/strong>, <strong>themes<\/strong> et <strong>uploads<\/strong>.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-163025-61e74910d3457.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-163025-61e74910d3457.png\" alt=\"Lire et comprendre les journaux d&#039;erreurs de WordPress, partie 1\"><\/a><\/p>\n<p>Comme vous pouvez le voir dans l&rsquo;aper\u00e7u de la capture d&rsquo;\u00e9cran ci-dessus, mon fichier de d\u00e9bogage contient beaucoup de contenu. Nous examinerons cela plus en profondeur dans la section suivante, ainsi que la fa\u00e7on de le comprendre. En attendant, cependant, v\u00e9rifiez si ce fichier existe m\u00eame. Si c&rsquo;est le cas, n&rsquo;h\u00e9sitez pas \u00e0 aller de l&rsquo;avant et \u00e0 parcourir le contenu du fichier. Vous ne comprenez peut-\u00eatre pas grand-chose \u00e0 ce qui se passe, mais le contenu du fichier signifie que quelque chose dans un th\u00e8me ou un plug-in d\u00e9clenche divers <strong><a href=\"https:\/\/secure.php.net\/manual\/en\/function.error-reporting.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">avertissements, avis et erreurs PHP<\/a><\/strong> que WordPress d\u00e9tecte et transf\u00e8re dans le fichier journal.<\/p>\n<h3>Qu&rsquo;est-ce que le fichier journal signifie m\u00eame\u00a0?<\/h3>\n<p>Cela ne signifie pas n\u00e9cessairement que quelque chose est cass\u00e9, mais cela indique que quelque chose ne fonctionne pas comme il se doit, n&rsquo;est pas correctement d\u00e9tect\u00e9 et g\u00e9r\u00e9 au niveau programmatique, ou fait simplement quelque chose qu&rsquo;il ne devrait pas faire.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-163025-61e749148c865.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-163025-61e749148c865.png\" alt=\"Lire et comprendre les journaux d&#039;erreurs de WordPress, partie 1\"><\/a><\/p>\n<p>Il n&rsquo;a pas \u00e0 ressembler \u00e0 \u00e7a (mais c&rsquo;est possible !).<\/p>\n<p>En tant que d\u00e9veloppeurs, nous devons nous efforcer de nous assurer que notre code ne g\u00e9n\u00e8re rien qui serait \u00e9crit dans le journal des erreurs.<\/p>\n<p>C&rsquo;est une chose de le faire en d\u00e9veloppement car nous sommes en mesure d&rsquo;avoir un aper\u00e7u de ce que nous faisons et de la performance de WordPress. C&rsquo;est une autre chose, cependant, pour quelque chose que nous publions au niveau de la production pour g\u00e9n\u00e9rer de telles choses.<\/p>\n<h3>Lecture du journal des erreurs<\/h3>\n<p>\u00c9videmment, il y a plus \u00e0 lire le journal des erreurs plut\u00f4t que de simplement l&rsquo;ouvrir. Pour beaucoup, l&rsquo;impression initiale est qu&rsquo;il peut s&rsquo;agir d&rsquo;un tas de jargon. Je comprends \u00e7a aussi. Mais quand vous comprenez ce qu&rsquo;il vous montre, c&rsquo;est beaucoup plus facile \u00e0 comprendre.<\/p>\n<p>Prenons donc un exemple tr\u00e8s simple. Ce n&rsquo;est pas non plus un exemple artificiel. En fait, celui-ci provient d&rsquo;un plugin sur lequel je travaillais. Le journal des erreurs contient <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/426e02bcfc411d43be6715b3e84ead7e#file-12-error-log-example-1-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">les informations suivantes<\/a><\/strong>\u00a0:<\/p>\n<pre><code>[05-Jul-2018 19:43:53 UTC] PHP Fatal error:  Uncaught Error: Class 'EasyEmailExportAdminEmailExportSubmenu' not found in \/Users\/tommcfarlin\/Dropbox\/Projects\/trunk\/wp-content\/plugins\/easy-email-export\/easy-email-export.php:37\n#8 \/U in \/Users\/tommcfarlin\/Dropbox\/Projects\/trunk\/wp-content\/plugins\/easy-email-export\/easy-email-export.php on line 37\n[05-Jul-2018 19:44:03 UTC] PHP Warning:  include_once(.\/src\/Admin\/EmailExportSubmenu.php): failed to open stream: No such file or directory in \/Users\/tommcfarlin\/Dropbox\/Projects\/trunk\/wp-content\/plugins\/easy-email-export\/easy-email-export.php on line 25\n[05-Jul-2018 19:44:03 UTC] PHP Warning:  include_once(): Failed opening '.\/src\/Admin\/EmailExportSubmenu.php' for inclusion (include_path='.:\/usr\/local\/Cellar\/php\/7.2.5\/share\/php\/pear') in \/Users\/tommcfarlin\/Dropbox\/Projects\/trunk\/wp-content\/plugins\/easy-email-export\/easy-email-export.php on line 25<\/code><\/pre>\n<p>Notez que, dans l&rsquo;essentiel ci-dessus, il y a trois lignes. Le meilleur plan d&rsquo;action lors de la lecture des journaux d&rsquo;erreurs est de commencer par le bas et de remonter. En effet, lors de l&rsquo;ex\u00e9cution, les choses fonctionnent sur une pile.<\/p>\n<h4>Une courte digression sur les piles<\/h4>\n<p>Je n&rsquo;entrerai pas dans la d\u00e9finition informatique du terme, mais le code est ex\u00e9cut\u00e9 et fonctionne de telle mani\u00e8re que les fonctions se produisent et litt\u00e9ralement, dans la m\u00e9moire d&rsquo;un ordinateur, s&#8217;empilent les unes sur les autres.<\/p>\n<p>Ainsi, la chose la plus r\u00e9cente \u00e0 ex\u00e9cuter sera toujours en haut l\u00e0 o\u00f9 la racine de l&rsquo;endroit o\u00f9 elle commence est en bas. Puisque nous \u00e9crivons du code sur une application pr\u00e9existante, c&rsquo;est-\u00e0-dire WordPress ; alors notre code est susceptible d&rsquo;\u00eatre toujours au sommet.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-163025-61e74918219d3.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-163025-61e74918219d3.png\" alt=\"Lire et comprendre les journaux d&#039;erreurs de WordPress, partie 1\"><\/a><\/p>\n<p>Comprendre les journaux d&rsquo;erreurs WordPress\u00a0: ce n&rsquo;est pas ce genre de pile<\/p>\n<p>L&rsquo;id\u00e9e est que le code commencera \u00e0 s&rsquo;ex\u00e9cuter dans WordPress et progressera jusqu&rsquo;au travail que nous faisons. Lorsqu&rsquo;il y a un avis, un avertissement ou une erreur, cela se trouve g\u00e9n\u00e9ralement dans notre code (bien que WordPress ne soit pas exempt\u00e9, c&rsquo;est g\u00e9n\u00e9ralement le cas).<\/p>\n<p>Ainsi, lorsque vous lisez le journal des erreurs, vous lisez essentiellement ce que l&rsquo;on appelle une <strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Stack_trace\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">trace de pile.<\/a><\/strong> Wikip\u00e9dia, tel que li\u00e9, a une d\u00e9finition assez d\u00e9taill\u00e9e sur le sujet, mais peut-\u00eatre que la partie la plus pertinente de cet article est la suivante\u00a0:<\/p>\n<blockquote>\n<p>Les programmeurs utilisent couramment le tra\u00e7age de pile pendant le [d\u00e9bogage] interactif et post-mortem (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Debugging\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/en.wikipedia.org\/wiki\/Debugging<\/a>). Les utilisateurs finaux peuvent voir une trace de pile affich\u00e9e dans le cadre d&rsquo;un <a href=\"https:\/\/en.wikipedia.org\/wiki\/Error_message\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">message d&rsquo;erreur<\/a>, que l&rsquo;utilisateur peut ensuite signaler \u00e0 un programmeur.<\/p>\n<\/blockquote>\n<p>Cela correspond \u00e0 ce que j&rsquo;ai d\u00e9crit ci-dessus, n&rsquo;est-ce pas\u00a0? Mais assez parl\u00e9 de ce qu&rsquo;est une trace de pile (cela deviendra plus clair au fur et \u00e0 mesure que nous approfondirons le d\u00e9bogage), revenons \u00e0 la lecture du fichier journal tel qu&rsquo;il se pr\u00e9sente actuellement.<\/p>\n<h3>Retour \u00e0 la lecture du journal<\/h3>\n<h4>Inclure des fichiers<\/h4>\n<p>Tout d&rsquo;abord, regardons l&rsquo;essentiel dans l&rsquo;essentiel ci-dessus. Il contient les \u00e9l\u00e9ments suivants\u00a0:<\/p>\n<pre><code>[05-Jul-2018 19:44:03 UTC] PHP Warning: include_once(): Failed opening '.\/src\/Admin\/EmailExportSubmenu.php' for inclusion (include_path='.:\/usr\/local\/Cellar\/php\/7.2.5\/share\/php\/pear') in \/Users\/tommcfarlin\/Dropbox\/Projects\/trunk\/wp-content\/plugins\/easy-email-export\/easy-email-export.php on line 25<\/code><\/pre>\n<p>Cela me dit qu&rsquo;\u00e0 la ligne 25 de mon fichier, <strong>easy-email-export.php,<\/strong> il n&rsquo;a pas r\u00e9ussi \u00e0 ouvrir un fichier \u00e0 inclure. Cela signifie que j&rsquo;ai une instruction <strong>include_once<\/strong> dans le code qui fait r\u00e9f\u00e9rence <strong>\u00e0 .\/src\/Admin\/EmailExportSubmenu.php<\/strong> qu&rsquo;il ne trouve pas.<\/p>\n<p>Donc, le meilleur plan d&rsquo;action serait de trouver la ligne 25 et de d\u00e9terminer pourquoi il ne localise pas le fichier. Peut-\u00eatre que cela vide le chemin complet de l&rsquo;endroit o\u00f9 il regarde. Nous y reviendrons momentan\u00e9ment lorsque nous parlerons de l&rsquo;\u00e9criture dans le journal des erreurs.<\/p>\n<h4>Donner un sens aux erreurs<\/h4>\n<p>Sur la ligne suivante (c&rsquo;est-\u00e0-dire la ligne au-dessus de celle que nous venons de regarder) contient ce qui suit\u00a0:<\/p>\n<pre><code>[05-Jul-2018 19:44:03 UTC] PHP Warning: include_once(.\/src\/Admin\/EmailExportSubmenu.php): failed to open stream: No such file or directory in \/Users\/tommcfarlin\/Dropbox\/Projects\/trunk\/wp-content\/plugins\/easy-email-export\/easy-email-export.php on line 25<\/code><\/pre>\n<p>Cette ligne particuli\u00e8re ne diff\u00e8re que l\u00e9g\u00e8rement, mais elle donne un aper\u00e7u suppl\u00e9mentaire et cela est contenu dans la clause qui lit &quot;Aucun fichier ou r\u00e9pertoire de ce type&quot;. C&rsquo;est perspicace car cela nous dit litt\u00e9ralement que le fichier n&rsquo;existe pas.<\/p>\n<p>Au moins, il n&rsquo;existe pas l\u00e0 o\u00f9 il regarde. Donc les deux possibilit\u00e9s sont :<\/p>\n<ol>\n<li>nous n&rsquo;avons pas cr\u00e9\u00e9 le fichier auquel nous nous r\u00e9f\u00e9rons,<\/li>\n<li>nous r\u00e9f\u00e9ren\u00e7ons l&#8217;emplacement du fichier au mauvais endroit<\/li>\n<\/ol>\n<p>Ainsi, la premi\u00e8re chose que nous devons v\u00e9rifier est si le fichier existe \u00e0 l&#8217;emplacement que nous essayons d&rsquo;inclure. Si ce n&rsquo;est pas le cas, nous devrions cr\u00e9er le fichier.<\/p>\n<p>Si le fichier existe, nous savons que le plugin cherche \u00e0 le charger \u00e0 partir du mauvais chemin. Nous devrons donc peut-\u00eatre regarder notre <strong><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/espaces-de-noms-et-chargement-automatique-dans-wordpress\/\" title=\"autoloader\">autoloader<\/a><\/strong>, notre chemin d&rsquo;inclusion ou la mani\u00e8re dont les fichiers sont r\u00e9cup\u00e9r\u00e9s. Parce que, si le fichier existe, il y a de fortes chances qu&rsquo;il essaie d&rsquo;\u00eatre charg\u00e9 \u00e0 partir d&rsquo;un endroit o\u00f9 il ne r\u00e9side pas.<\/p>\n<h3>Une erreur non d\u00e9tect\u00e9e<\/h3>\n<p>Dans la derni\u00e8re ligne du code, vous verrez quelque chose comme ceci\u00a0:<\/p>\n<pre><code>[05-Jul-2018 19:43:53 UTC] PHP Fatal error: Uncaught Error: Class 'EasyEmailExportAdminEmailExportSubmenu' not found in \/Users\/tommcfarlin\/Dropbox\/Projects\/trunk\/wp-content\/plugins\/easy-email-export\/easy-email-export.php:37\n#8 \/U in \/Users\/tommcfarlin\/Dropbox\/Projects\/trunk\/wp-content\/plugins\/easy-email-export\/easy-email-export.php on line 37<\/code><\/pre>\n<p>C&rsquo;est un bon exemple, d&rsquo;abord, parce qu&rsquo;il d\u00e9clare explicitement qu&rsquo;il s&rsquo;agit d&rsquo;une erreur non intercept\u00e9e. Cela signifie que quelle que soit la fonctionnalit\u00e9, quelque chose g\u00e9n\u00e8re une erreur et elle n&rsquo;est pas d\u00e9tect\u00e9e.<\/p>\n<ul>\n<li>cela pourrait \u00eatre une exception,<\/li>\n<li>cela pourrait \u00eatre un probl\u00e8me en essayant d&rsquo;appeler une fonction qui n&rsquo;existe pas,<\/li>\n<li>cela pourrait fonctionner sur une variable qui n&rsquo;est pas d\u00e9finie,<\/li>\n<li>etc.<\/li>\n<\/ul>\n<p>En fin de compte, il y a une pl\u00e9thore de probl\u00e8mes qui pourraient \u00eatre pr\u00e9sents. La bonne nouvelle, dans cet exemple, c&rsquo;est que c&rsquo;est pratiquement la m\u00eame chose que ci-dessus: un fichier est introuvable.<\/p>\n<p>Sauf que, plut\u00f4t que de lancer un avertissement, PHP nous indique explicitement qu&rsquo;il s&rsquo;agit d&rsquo;une erreur fatale et que le programme ne peut pas continuer son ex\u00e9cution tant que cette ligne de code n&rsquo;est pas r\u00e9solue. Avant de rejeter cela comme quelque chose qui est identique \u00e0 la section pr\u00e9c\u00e9dente (parce que, d&rsquo;une certaine mani\u00e8re, c&rsquo;est le cas), nous devons reconna\u00eetre que cela est explicitement indiqu\u00e9 comme une erreur fatale alors que, dans l&rsquo;exemple pr\u00e9c\u00e9dent, il a \u00e9t\u00e9 trait\u00e9 comme un Attention.<\/p>\n<p>Il y a diff\u00e9rentes fa\u00e7ons de conceptualiser cela, mais la fa\u00e7on dont j&rsquo;y pense g\u00e9n\u00e9ralement est la suivante :<\/p>\n<ul>\n<li>Un avis m&rsquo;indique que quelque chose ne va pas dans le code, mais ce n&rsquo;est pas assez grave pour justifier l&rsquo;arr\u00eat de l&rsquo;ex\u00e9cution.<\/li>\n<li>Un avertissement est l\u00e9g\u00e8rement plus s\u00e9rieux car cela signifie que quelque chose risque de ne pas fonctionner.<\/li>\n<li>Une erreur indique directement &quot;cela ne fonctionne pas et le programme ne peut pas continuer&quot;.<\/li>\n<\/ul>\n<p>Maintenant, nous savons que le probl\u00e8me est \u00e9poustouflant, pour ainsi dire, et nous savons quel est le probl\u00e8me. En termes simples, un fichier n\u00e9cessaire au programme pour terminer son ex\u00e9cution n&rsquo;est pas trouv\u00e9 et le programme cesse donc de fonctionner.<\/p>\n<p>C&rsquo;est certainement une erreur fatale.<\/p>\n<h3>Quelle est la solution\u00a0?<\/h3>\n<p>Ce que je propose comme solution \u00e0 mon probl\u00e8me ne sera pas normatif quant \u00e0 ce qui fonctionnera pour vous. Pour moi, il s&rsquo;agissait d&rsquo;une ligne dans ma configuration Composer telle que le chargeur automatique Composer ne pouvait pas localiser le fichier au bon emplacement (mais cela a plus \u00e0 voir avec l&rsquo;organisation des fichiers, l&rsquo;espacement des noms, etc.).<\/p>\n<p>Pour vous, cela peut \u00eatre quelque chose de diff\u00e9rent.<\/p>\n<ul>\n<li>peut-\u00eatre cherche-t-il un fichier dans le mauvais r\u00e9pertoire,<\/li>\n<li>peut-\u00eatre que le fichier porte un nom diff\u00e9rent de celui sp\u00e9cifi\u00e9 dans le code,<\/li>\n<li>ou peut-\u00eatre que c&rsquo;est autre chose.<\/li>\n<\/ul>\n<p>Quoi qu&rsquo;il en soit, le fait est qu&rsquo;il s&rsquo;agit de parcourir le fichier journal de bas en haut pour diagnostiquer le probl\u00e8me et tracer ce que font PHP, WordPress et votre travail, puis le diagnostiquer \u00e0 partir de l\u00e0.<\/p>\n<h2>\u00c9criture dans le journal des erreurs<\/h2>\n<p>Dans le prochain article, nous allons prendre un moment pour voir comment nous pouvons \u00e9crire dans le journal des erreurs. Parfois, lire le fichier est bien et simplement aller et venir entre ce que nous voyons et r\u00e9soudre les probl\u00e8mes est agr\u00e9able.<\/p>\n<p>Mais qu&rsquo;en est-il du cas o\u00f9 nous voulons vider quelque chose pour avoir un aper\u00e7u de ce que voit WordPress ou PHP? C&rsquo;est aussi utile.<\/p>\n<p>Donc, dans la prochaine partie de cette s\u00e9rie sur la compr\u00e9hension des journaux d&rsquo;erreurs WordPress, nous ferons exactement cela.<\/p>\n<h3>Qu&rsquo;y a-t-il apr\u00e8s \u00e7a\u00a0?<\/h3>\n<p>Ensuite, nous verrons comment utiliser certains des plugins d\u00e9crits pr\u00e9c\u00e9demment pour tester le code et \u00e9galement profiler notre code pour nous assurer que nous avons fait tout notre possible pour nous assurer que nous produisons un niveau de qualit\u00e9.<\/p>\n<p>Cela ne signifie pas que nous en avons compl\u00e8tement termin\u00e9 avec le processus de d\u00e9bogage, mais nous sommes certainement un peu plus pr\u00e8s, et nous sommes positionn\u00e9s pour \u00e9crire du code avec un degr\u00e9 de qualit\u00e9 qui ne se traduit pas par un fichier repr\u00e9sentant divers probl\u00e8mes nuanc\u00e9s nous \u00e9tions trop n\u00e9gligents pour r\u00e9parer (et encore moins comprendre).<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pour commencer \u00e0 d\u00e9boguer votre code sans utiliser d&rsquo;outils tiers, pourquoi ne pas regarder ce que PHP et WordPress g\u00e9n\u00e8rent et comprendre les journaux d&rsquo;erreurs de WordPress.<\/p>\n","protected":false},"author":1,"featured_media":163026,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[893,717,841,862],"tags":[1167],"class_list":["post-230624","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-developpeur","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/230624","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=230624"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/230624\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/163026"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=230624"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=230624"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=230624"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}