{"id":230184,"date":"2022-12-04T17:18:00","date_gmt":"2022-12-04T14:18:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230184"},"modified":"2022-12-04T17:30:35","modified_gmt":"2022-12-04T14:30:35","slug":"laesa-och-foerstaa-wordpress-felloggar-del-1","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/laesa-och-foerstaa-wordpress-felloggar-del-1\/","title":{"rendered":"L\u00e4sa och f\u00f6rst\u00e5 WordPress-felloggar, del 1"},"content":{"rendered":"\n<p>N\u00e4r vi forts\u00e4tter att titta p\u00e5 vad det inneb\u00e4r att vara <strong><a href=\"https:\/\/tommcfarlin.com\/tag\/the-independent-wordpress-developer\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">en oberoende WordPress-utvecklare<\/a><\/strong>, de verktyg som beh\u00f6vs och de olika strategierna som kan f\u00f6rb\u00e4ttra v\u00e5r kompetens, har jag pratat igenom de olika konstanterna, plugins och verktyg f\u00f6r att hj\u00e4lpa oss.<\/p>\n<p>Om du bara snubblar \u00f6ver det h\u00e4r inl\u00e4gget rekommenderar jag att du kollar in <strong><a href=\"https:\/\/wordpress.mediadoma.com\/sv\/inbyggda-wordpress-felsoekningsverktyg-som-inte-kraever-en-ide\/\" title=\"min guide till inbyggda WordPress-fels\u00f6kningsverktyg\">min guide till inbyggda WordPress-fels\u00f6kningsverktyg<\/a><\/strong> samt resten av inl\u00e4ggen i serien <strong><a href=\"https:\/\/tommcfarlin.com\/tag\/the-independent-wordpress-developer\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">hittills.<\/a><\/strong><\/p>\n<p>N\u00e4r allt kommer omkring tycker jag att det \u00e4r viktigt att vi alla arbetar utifr\u00e5n samma grund \u2013 eller n\u00e5got n\u00e4rbesl\u00e4ktat \u2013 n\u00e4r vi g\u00e5r igenom denna information.<\/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=\"L\u00e4sa och f\u00f6rst\u00e5 WordPress-felloggar, del 1\"><\/a><\/p>\n<p>I slut\u00e4ndan \u00e4r det oumb\u00e4rligt att anv\u00e4nda ett verktyg som <strong><a href=\"https:\/\/xdebug.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Xdebug<\/a><\/strong>, men vi m\u00e5ste arbeta upp till det (f\u00f6r den som \u00e4r nyfiken skrev <strong><a href=\"https:\/\/wordpress.mediadoma.com\/sv\/anvaender-xdebug-med-valet-och-wordpress\/\" title=\"jag en kort guide\">jag en kort guide<\/a><\/strong> om detta f\u00f6r lite \u00f6ver ett \u00e5r sedan).<\/p>\n<p>F\u00f6r nu, men l\u00e5t oss b\u00f6rja med grunderna. I f\u00f6rra inl\u00e4gget l\u00e4mnade jag f\u00f6ljande uttalande:<\/p>\n<blockquote>\n<p>I n\u00e4sta inl\u00e4gg b\u00f6rjar vi titta p\u00e5 vad som \u00e4r n\u00f6dv\u00e4ndigt f\u00f6r att unders\u00f6ka felloggen som genereras av WordPress och hur man f\u00f6rst\u00e5r informationen vi ser.<\/p>\n<\/blockquote>\n<p>Och det \u00e4r vad jag vill titta p\u00e5 idag, f\u00f6r om inte annat kommer det att ge dig n\u00e5got praktiskt att arbeta med.<\/p>\n<h2>F\u00f6rst\u00e5 WordPress-felloggar, del 1<\/h2>\n<p>Innan jag g\u00e5r f\u00f6r l\u00e5ngt in p\u00e5 det h\u00e4r vill jag ta upp en fr\u00e5ga som har tagits upp fr\u00e5n en medlem p\u00e5 webbplatsen.<\/p>\n<p>Jag fick n\u00e4mligen fr\u00e5gan:<\/p>\n<blockquote>\n<p>N\u00e4r ska vi titta p\u00e5 objektorienterade principer?<\/p>\n<\/blockquote>\n<p>\u00c4ven om jag har t\u00e4ckt lite om detta <strong><a href=\"https:\/\/tommcfarlin.com\/tag\/oop-fundamentals\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">i en tidigare serie<\/a><\/strong>, \u00e4r det n\u00e5got som jag jobbar p\u00e5 att t\u00e4cka mer ing\u00e5ende senare i den h\u00e4r serien.<\/p>\n<p>Men med det sagt, l\u00e5t oss b\u00f6rja titta p\u00e5 felloggar.<\/p>\n<h3>Konfigurera dina konstanter<\/h3>\n<p>Om du inte har konfigurerat konstanterna i din <strong>wp-config.php-<\/strong> fil, rekommenderar jag att du g\u00f6r det nu eftersom detta kommer att ge dig den st\u00f6rsta granualiteten n\u00e4r du unders\u00f6ker eventuella problem som kan uppst\u00e5.<\/p>\n<p>Om du inte har kommit ikapp, se till att l\u00e4sa <strong><a href=\"https:\/\/wordpress.mediadoma.com\/sv\/inbyggda-wordpress-felsoekningsverktyg-som-inte-kraever-en-ide\/\" title=\"det h\u00e4r inl\u00e4gget\">det h\u00e4r inl\u00e4gget<\/a><\/strong> (och om du har, se till <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\">att f\u00f6ljande konstanter<\/a><\/strong> \u00e4r definierade i din konfigurationsfil):<\/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>N\u00e4r de v\u00e4l \u00e4r p\u00e5 plats har du allt du beh\u00f6ver f\u00f6r att inte bara se information p\u00e5 sk\u00e4rmen utan ocks\u00e5 i fels\u00f6kningsloggen som WordPress kommer att generera.<\/p>\n<h3>Var \u00e4r loggen?<\/h3>\n<p>Beroende p\u00e5 din milj\u00f6s natur kan detta variera; men i de flesta fall kommer du att hitta <strong>debug.log<\/strong> i <strong>wp-content-<\/strong> katalogen ovanf\u00f6r katalogerna f\u00f6r <strong>plugins<\/strong>, <strong>teman<\/strong> och <strong>uppladdningar<\/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=\"L\u00e4sa och f\u00f6rst\u00e5 WordPress-felloggar, del 1\"><\/a><\/p>\n<p>Som du kan se fr\u00e5n f\u00f6rhandsgranskningen av sk\u00e4rmdumpen ovan har min fels\u00f6kningsfil mycket inneh\u00e5ll. Vi kommer att ta en titt p\u00e5 det mer ing\u00e5ende i n\u00e4sta avsnitt samt hur man f\u00f6rst\u00e5r det. Under tiden, dock, kontrollera f\u00f6r att se om den h\u00e4r filen ens existerar. Om den g\u00f6r det \u00e4r du v\u00e4lkommen att g\u00e5 vidare och granska inneh\u00e5llet i filen. Du kanske f\u00f6rst\u00e5r mycket av vad som h\u00e4nder, men kanske inte, men inneh\u00e5llet i filen betyder att n\u00e5got i ett tema eller plugin utl\u00f6ser olika <strong><a href=\"https:\/\/secure.php.net\/manual\/en\/function.error-reporting.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP-varningar, meddelanden och fel<\/a><\/strong> som WordPress f\u00e5ngar och dumpar till loggfilen.<\/p>\n<h3>Vad betyder loggfilen ens?<\/h3>\n<p>Detta betyder inte n\u00f6dv\u00e4ndigtvis att n\u00e5got \u00e4r trasigt, men det indikerar att n\u00e5got inte fungerar som det ska, inte f\u00e5ngas upp och hanteras korrekt p\u00e5 den programmatiska niv\u00e5n, eller helt enkelt g\u00f6r n\u00e5got som det inte borde g\u00f6ra.<\/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=\"L\u00e4sa och f\u00f6rst\u00e5 WordPress-felloggar, del 1\"><\/a><\/p>\n<p>Det beh\u00f6ver inte se ut s\u00e5 h\u00e4r (men det kan det!).<\/p>\n<p>Som utvecklare b\u00f6r vi str\u00e4va efter att se till att v\u00e5r kod inte genererar n\u00e5got som skulle skrivas till felloggen.<\/p>\n<p>Det \u00e4r en sak att g\u00f6ra det under utveckling eftersom vi kan f\u00e5 insikt om vad det \u00e4r vi g\u00f6r och hur WordPress presterar. Det \u00e4r dock en annan sak f\u00f6r n\u00e5got som vi sl\u00e4pper p\u00e5 produktionsniv\u00e5 f\u00f6r att generera s\u00e5dana saker.<\/p>\n<h3>L\u00e4ser felloggen<\/h3>\n<p>Uppenbarligen \u00e4r det mer att l\u00e4sa felloggen snarare \u00e4n att bara \u00f6ppna den. F\u00f6r m\u00e5nga \u00e4r det f\u00f6rsta intrycket att det kan vara ett g\u00e4ng jargong. Det f\u00f6rst\u00e5r jag ocks\u00e5. Men n\u00e4r du f\u00f6rst\u00e5r vad den visar dig \u00e4r det mycket l\u00e4ttare att f\u00f6rst\u00e5.<\/p>\n<p>S\u00e5 l\u00e5t oss ta en titt p\u00e5 ett riktigt enkelt exempel. Det h\u00e4r \u00e4r inte heller ett konstruerat exempel. Det h\u00e4r \u00e4r faktiskt en som kommer fr\u00e5n ett plugin som jag arbetade med. Felloggen inneh\u00e5ller <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\">f\u00f6ljande information<\/a><\/strong> :<\/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>L\u00e4gg m\u00e4rke till att det i ovanst\u00e5ende sammanfattning finns tre rader. Det b\u00e4sta tillv\u00e4gag\u00e5ngss\u00e4ttet n\u00e4r du l\u00e4ser felloggar \u00e4r att b\u00f6rja l\u00e4ngst ner och arbeta dig upp\u00e5t. Detta beror p\u00e5 att saker n\u00e4r de k\u00f6rs i utf\u00f6rande, fungerar p\u00e5 en stack.<\/p>\n<h4>En kort utvikning p\u00e5 h\u00f6gar<\/h4>\n<p>Jag ska inte g\u00e5 in p\u00e5 den datavetenskapliga definitionen av termen, men koden exekveras och fungerar p\u00e5 ett s\u00e5dant s\u00e4tt att funktioner uppst\u00e5r och bokstavligen, i en dators minne, staplas ovanp\u00e5 varandra.<\/p>\n<p>Allts\u00e5 kommer det senaste att springa alltid vara h\u00f6gst upp d\u00e4r roten till d\u00e4r det b\u00f6rjar \u00e4r l\u00e4ngst ner. Eftersom vi skriver kod p\u00e5 en redan existerande applikation, det \u00e4r WordPress; d\u00e5 \u00e4r v\u00e5r kod sannolikt alltid \u00f6verst.<\/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=\"L\u00e4sa och f\u00f6rst\u00e5 WordPress-felloggar, del 1\"><\/a><\/p>\n<p>F\u00f6rst\u00e5 WordPress-felloggar: Det \u00e4r inte den h\u00e4r typen av stack<\/p>\n<p>Tanken \u00e4r att koden ska b\u00f6rja k\u00f6ras i WordPress och arbeta sig upp till det arbete vi g\u00f6r. N\u00e4r det finns ett meddelande, en varning eller ett fel, kommer det vanligtvis att vara n\u00e5got i v\u00e5r kod (\u00e4ven om WordPress inte \u00e4r undantaget, s\u00e5 \u00e4r det i allm\u00e4nhet fallet).<\/p>\n<p>S\u00e5 n\u00e4r du l\u00e4ser igenom felloggen l\u00e4ser du i huvudsak igenom det som kallas en <strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Stack_trace\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">stacksp\u00e5rning.<\/a><\/strong> Wikipedia, som l\u00e4nkat, har en ganska djupg\u00e5ende definition av \u00e4mnet, men den kanske mest relevanta biten f\u00f6r detta inl\u00e4gg \u00e4r f\u00f6ljande:<\/p>\n<blockquote>\n<p>Programmerare anv\u00e4nder vanligtvis stacksp\u00e5rning under interaktiv och post-mortem <a href=\"\/\/en.wikipedia.org\/wiki\/Debugging)\" class=\"external external_icon\" rel=\"nofollow\" target=\"_blank\">debugging<\/a>. Slutanv\u00e4ndare kan se en stacksp\u00e5rning visas som en del av ett <a href=\"https:\/\/en.wikipedia.org\/wiki\/Error_message\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">felmeddelande<\/a>, som anv\u00e4ndaren sedan kan rapportera till en programmerare.<\/p>\n<\/blockquote>\n<p>Detta st\u00e4mmer \u00f6verens med det jag har beskrivit ovan, eller hur? Men nog med att prata om vad en stacksp\u00e5rning \u00e4r (det kommer att bli tydligare n\u00e4r vi kommer djupare in p\u00e5 fels\u00f6kning), l\u00e5t oss \u00e5terg\u00e5 till att l\u00e4sa loggfilen som den ser ut f\u00f6r n\u00e4rvarande.<\/p>\n<h3>Tillbaka till L\u00e4sa loggen<\/h3>\n<h4>Inklusive filer<\/h4>\n<p>L\u00e5t oss f\u00f6rst titta p\u00e5 den nedersta raden i sammanfattningen ovan. Den inneh\u00e5ller f\u00f6ljande:<\/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>Detta s\u00e4ger mig att p\u00e5 rad 25 i min fil, <strong>easy-email-export.php,<\/strong> misslyckades den med att \u00f6ppna en fil f\u00f6r inkludering. Det betyder att jag har en <strong>include_once-<\/strong> sats i koden som refererar till <strong>.\/src\/Admin\/EmailExportSubmenu.php<\/strong> som den inte kan hitta.<\/p>\n<p>S\u00e5 det b\u00e4sta tillv\u00e4gag\u00e5ngss\u00e4ttet skulle vara att hitta rad 25 och avg\u00f6ra varf\u00f6r den inte hittar filen. Kanske dumpar det hela v\u00e4gen till vart den letar. Vi kommer till detta ett \u00f6gonblick n\u00e4r vi pratar om att skriva till felloggen.<\/p>\n<h4>Att f\u00f6rst\u00e5 felen<\/h4>\n<p>P\u00e5 n\u00e4sta rad (det vill s\u00e4ga raden ovanf\u00f6r den vi just har tittat p\u00e5) inneh\u00e5ller f\u00f6ljande:<\/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>Den h\u00e4r specifika raden skiljer sig bara lite men den ger ytterligare insikt och det finns i klausulen som lyder &quot;Ingen s\u00e5dan fil eller katalog.&quot; Detta \u00e4r insiktsfullt eftersom det bokstavligen talar om f\u00f6r oss att filen inte existerar.<\/p>\n<p>\u00c5tminstone finns den inte d\u00e4r den letar. S\u00e5 de tv\u00e5 m\u00f6jligheterna \u00e4r:<\/p>\n<ol>\n<li>vi har inte skapat filen vi refererar till,<\/li>\n<li>vi h\u00e4nvisar till platsen f\u00f6r filen p\u00e5 fel plats<\/li>\n<\/ol>\n<p>Det f\u00f6rsta vi skulle beh\u00f6va kontrollera \u00e4r allts\u00e5 om filen finns p\u00e5 den plats vi f\u00f6rs\u00f6ker inkludera. Om det inte g\u00f6r det b\u00f6r vi skapa filen.<\/p>\n<p>Om filen existerar vet vi att pluginet f\u00f6rs\u00f6ker ladda den fr\u00e5n fel s\u00f6kv\u00e4g. S\u00e5 vi kan beh\u00f6va titta p\u00e5 v\u00e5r <strong><a href=\"https:\/\/wordpress.mediadoma.com\/sv\/namnutrymmen-och-autoladdning-i-wordpress\/\" title=\"autoloader\">autoloader<\/a><\/strong>, v\u00e5r v\u00e4g f\u00f6r inkludering, eller hur filerna h\u00e4mtas. Eftersom, oddsen \u00e4r, om filen finns, s\u00e5 f\u00f6rs\u00f6ker den laddas fr\u00e5n en plats d\u00e4r den inte finns.<\/p>\n<h3>Ett ouppt\u00e4ckt fel<\/h3>\n<p>I den sista raden i koden ser du n\u00e5got s\u00e5nt h\u00e4r:<\/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>Detta \u00e4r ett bra exempel, f\u00f6r det f\u00f6rsta, eftersom det uttryckligen f\u00f6rklarar att detta \u00e4r ett ouppt\u00e4ckt fel. Detta betyder att oavsett funktionalitet, n\u00e5got ger ett fel och det f\u00e5ngas inte upp.<\/p>\n<ul>\n<li>detta kan vara ett undantag,<\/li>\n<li>detta kan vara ett problem n\u00e4r du f\u00f6rs\u00f6ker anropa en funktion som inte finns,<\/li>\n<li>detta kan fungera p\u00e5 en variabel som inte \u00e4r definierad,<\/li>\n<li>och s\u00e5 vidare.<\/li>\n<\/ul>\n<p>I slut\u00e4ndan finns det en uppsj\u00f6 av problem som kan vara n\u00e4rvarande. De goda nyheterna i det h\u00e4r exemplet \u00e4r att det praktiskt taget \u00e4r samma som ovan: En fil hittades inte.<\/p>\n<p>F\u00f6rutom, snarare \u00e4n att kasta en varning, s\u00e4ger PHP uttryckligen att detta \u00e4r ett fatalt fel och programmet kan inte forts\u00e4tta k\u00f6rningen f\u00f6rr\u00e4n denna kodrad \u00e4r l\u00f6st. Innan vi avf\u00e4rdar detta som n\u00e5got som \u00e4r detsamma som f\u00f6reg\u00e5ende avsnitt (eftersom det p\u00e5 ett s\u00e4tt \u00e4r det), m\u00e5ste vi inse att detta uttryckligen anges som ett fatalt misstag, medan det i f\u00f6reg\u00e5ende exempel behandlades som ett varning.<\/p>\n<p>Det finns olika s\u00e4tt att konceptualisera detta men hur jag generellt t\u00e4nker om det \u00e4r detta:<\/p>\n<ul>\n<li>Ett meddelande s\u00e4ger mig att n\u00e5got \u00e4r fel i koden, men det \u00e4r inte tillr\u00e4ckligt illa f\u00f6r att motivera att k\u00f6rningen stoppas.<\/li>\n<li>En varning \u00e4r n\u00e5got allvarligare eftersom den betyder att n\u00e5got riskerar att inte fungera.<\/li>\n<li>Ett felmeddelande direkt s\u00e4ger &quot;det h\u00e4r fungerar inte och programmet kan inte forts\u00e4tta.&quot;<\/li>\n<\/ul>\n<p>Nu vet vi att problemet h\u00e5ller p\u00e5 att ta slut, s\u00e5 att s\u00e4ga, och vi vet vad problemet \u00e4r. Enkelt uttryckt, en fil som kr\u00e4vs f\u00f6r att programmet ska slutf\u00f6ra sin k\u00f6rning hittas inte och programmet slutar d\u00e4rf\u00f6r fungera.<\/p>\n<p>Det \u00e4r verkligen ett fatalt misstag.<\/p>\n<h3>Vad \u00e4r l\u00f6sningen?<\/h3>\n<p>Det jag tillhandah\u00e5ller som l\u00f6sning p\u00e5 mitt problem kommer inte att vara f\u00f6reskrivande f\u00f6r vad som kommer att fungera f\u00f6r dig. F\u00f6r mig var det en fr\u00e5ga om en rad i min Composer-konfiguration s\u00e5 att Composer autoloader inte kunde hitta filen p\u00e5 r\u00e4tt plats (men detta har mer att g\u00f6ra med filorganisation, namnavst\u00e5nd och s\u00e5 vidare).<\/p>\n<p>F\u00f6r dig kan det vara n\u00e5got annat.<\/p>\n<ul>\n<li>kanske letar den efter en fil i fel katalog,<\/li>\n<li>kanske filen heter n\u00e5got annat \u00e4n vad som anges i koden,<\/li>\n<li>eller det kanske \u00e4r n\u00e5got annat.<\/li>\n<\/ul>\n<p>Oavsett vad som \u00e4r fallet \u00e4r po\u00e4ngen att det handlar om att arbeta dig igenom loggfilen fr\u00e5n botten till toppen f\u00f6r att diagnostisera problemet och sp\u00e5ra vad PHP, WordPress och ditt arbete g\u00f6r och sedan diagnostisera det d\u00e4rifr\u00e5n.<\/p>\n<h2>Skriver till felloggen<\/h2>\n<p>I n\u00e4sta inl\u00e4gg ska vi ta en stund f\u00f6r att se hur vi kan skriva till felloggen. Ibland g\u00e5r det bra att l\u00e4sa filen och att bara g\u00e5 fram och tillbaka mellan det vi ser och l\u00f6sa problemen \u00e4r bra.<\/p>\n<p>Men hur \u00e4r det med fallet n\u00e4r vi vill dumpa n\u00e5got f\u00f6r att f\u00e5 insikt om vad WordPress eller PHP ser? Det \u00e4r ocks\u00e5 anv\u00e4ndbart.<\/p>\n<p>S\u00e5 i n\u00e4sta del av den h\u00e4r serien om att f\u00f6rst\u00e5 WordPress-felloggar kommer vi att g\u00f6ra exakt det.<\/p>\n<h3>Vad \u00e4r efter det?<\/h3>\n<p>D\u00e4refter kommer vi att titta p\u00e5 hur man anv\u00e4nder n\u00e5gra av de plugins som tidigare beskrivits f\u00f6r att testa kod och \u00e4ven profilera v\u00e5r kod f\u00f6r att se till att vi har gjort allt vi kan f\u00f6r att s\u00e4kerst\u00e4lla att vi producerar en kvalitetsniv\u00e5.<\/p>\n<p>Detta betyder inte att vi \u00e4r helt klara med fels\u00f6kningsprocessen, men vi \u00e4r definitivt ett steg n\u00e4rmare, och vi \u00e4r positionerade f\u00f6r att skriva kod med en grad av kvalitet som inte resulterar i en fil som representerar olika nyanserade problem vi var f\u00f6r slarviga f\u00f6r att fixa (l\u00e5t vara att f\u00f6rst\u00e5).<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>F\u00f6r att b\u00f6rja fels\u00f6ka din kod utan att anv\u00e4nda verktyg fr\u00e5n tredje part, varf\u00f6r inte titta p\u00e5 vad PHP och WordPress genererar och arbeta genom att f\u00f6rst\u00e5 WordPress felloggar.<\/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":[848,901,724,868],"tags":[1173],"class_list":["post-230184","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-handledningar","category-koda","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230184","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=230184"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230184\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/163026"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=230184"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=230184"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=230184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}