Debugging website - WordPress foutopsporing en probleemoplossing
Krijg je een fout maar niet opgelost? In dit artikel alles over foutopsporing en debugging voor jouw (WordPress) website. De verschillende gebieden, methoden en tools om snel aan de slag te gaan om jouw code weer correct te laten werken.
Debug gebieden
Om problemen op te sporen, werk je vaak omgekeerd. Je begint met het uitsluiten van de verschillende gebieden waar het probleem in kan zitten. Je wilt eerst weten waar het in zit, door verschillende gebieden uit te sluiten. De verschillende debug gebieden voor WordPress zijn als volgt:
- Je PHP versie
- Je PHP instellingen, modules of opties
- Caching
- Je htaccess bestand
- Je wp-config bestand
- WordPress core installatie versies / updates
- WordPress thema/template versies / updates
- WordPress plugins versies / updates
- Bestanden en rechten
- SSL en https://
- DNS instellingen
- Database gebruik
- CPU gebruik
- Memory/werkgeheugen gebruik
Indien dat niet direct tot een oplossingsrichting leidt, kijk je als eerste debugging stap in de error_log van je website en/of hosting account:
Error logging in WordPress
- In de wp-config.php de WP_DEBUG op true zetten.
- In de PHP options de huidige instelling kopiëren en ergens opslaan, en dan aanpassen naar:
E_ALL
- Open nu je website, functie of pagina die de error of fout veroorzaakt. Hierdoor wordt er een nieuwe logregel weggeschreven in de errorlog. Doe vervolgens onderstaande command line search terwijl je bent ingelogd op het account via SSH:
find . -name error_log
- Je ziet nu de verschillende logs. Open bijvoorbeeld de wp-admin/error_log. Met de onderstaande command line search zoek je naar de laatste errors.
tail -f wp-admin/error_log
- Kijk of je een oorzaak kunt vinden, of wellicht een referentie aan een plugin ziet. Schakel een eventuele conflicterende plugin uit en kijk of het probleem daarmee verholpen is.
- Na afronding PHP options weer terugzetten naar oorspronkelijke instelling, in de wp-config.php de WP_Debug of false zetten en de error_log weer verwijderen!
Veel gebruikte oplossingen
Overweeg een van onderstaande oplossingen, om je probleem op te lossen:
- Controleer of er geen fouten zitten in je bestanden. Bijvoorbeeld:
- Een typo in je wp-config.php of .htaccess. Zelfs een */ teveel, of zelfs een ’ in plaats van een ‘ is een reden voor fouten.
- Google op de error melding. Je bent zeker niet de eerste die deze foutmelding krijgt
- Update plugins naar de nieuwste versie
- Update WordPress core naar de nieuwste versie
- Verander de PHP versie naar een lagere versie, soms is een plugin of thema dat niet up-to-date is de oorzaak namelijk.
- Leeg de cache van zowel je website (bijvoorbeeld LiteSpeed) als eventueel ook je thema (bijvoorbeeld Avada)
- Controleer je database credentials in de wp-config.php
- Verwijder de plugins die je niet gebruikt
- Je .htaccess bestand opschonen met een schone versie (maak eerst een kopie versie). Verwijder de huidige inhoud en plaats enkel onderstaand:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
- Zet alle plugins uit, behalve de plugin die niet werkt zoals je wilt. Hiermee test je of er een plugin conflict is.
- Wissel naar een standaard WordPress thema en test of het wel werkt in die opzet. Hiermee test je of het probleem in het thema zit.
- Sla de permalinks op onder een andere variant.
Veel voorkomende errors
403 errors
Deze betreffen in WordPress meestal een fout in de .htaccess
- Op login pagina WordPress 403 error: Check de .htaccess in de wp-content folder.
- Soms krijg je een 403 Forbidden error doordat je een Security plugin hebt die je IP-adres blokkeert. We raden Sucuri aan. Foutieve inlogpogingen worden namelijk al op serverniveau tegengehouden. Deactiveer de plugin of eventueel andere plugins tot het verholpen is.
- 403 Forbidden kan ook veroorzaakt worden door foute bestandsrechten. Zie onze handleiding Bestandsrechten goed zetten.
- 403 Forbidden kan tenslotte ook veroorzaakt worden door de Mod_Security Module.
404 Not Found errors
Deze hebben veelal te maken met de Permalinks instelling (Dashboard > Instellingen > Permalinks) of met een fout in de rewrite statements in de .htaccess.
- 500 Internal Server Errors 500 errors in WordPress zijn veelal PHP errors. Controleer hiervoor in ieder geval de error_log file. Daarin zullen waarschijnlijk een of meer regels voorkomen met "PHP Fatal Error", en daarachter ondermeer de php file waar dit speelt en de regel waarop dit optreedt.
- Wordt de error aan de voorzijde (reguliere error_log) of aan de achterzijde (wp-admin/error_log) gegenereerd?
- Staat PHP op een te hoge versie? (zie cPanel > Software > Select PHP Version)
- Zijn alle PHP benodigde modules wel ingeladen? (zie cPanel > Software > Select PHP Version)
- Zit er een fout in de .htaccess? Dit kun je nagaan door de .htaccess te hernoemen (met FTP of via de cPanel FileManager), vervolgens in je Dashboard naar Instellingen (Settings) te gaan, Permalinks te selecteren en Save changes te klikken. Als de site nu zonder de 500 Internal Server Error in beeld komt, weet je dat er een fout zit in de .htaccess die je hernoemd hebt.
Soms treedt een 500 Internal Server Error op doordat er onvoldoende memory is. De memory_limit van PHP kun je verhogen in cPanel > Software > Select PHP Version > Switch to PHP Options. Klik op het gewenste getal, vervolgens op Apply en dan op Save. Wees je er overigens van bewust dat daarmee de oorzaak van wat die hoge memory nodig heeft nog niet verholpen is!
Gaat het om een PHP error en ligt het niet aan de versie, de modules of de .htaccess, deactiveer dan de plugin en/of wijzig het thema. Neem contact op met de developer van de plugin of het theme, of zet de backup terug van voor de laatste wijziging van het betreffende php bestand.
- 503 Internal Server Error Deze kan voorkomen doordat alle resources gebruikt worden door huidige processen en/of door een grote stroom bezoekers.
- Processen als oorzaak Vaak is het een import/export/backup/email sync, het account zit dan zonder resources en bezoekers krijgen de 503 in beeld. Oorzaak zijn (een serie) processen die in het account actief zijn en die de volledige IO van het account opzuigen dus. Is het structureel, dan is het raadzaam te kijken wat de oorzaak is en dat te verhelpen (het kan ook veroorzaakt worden door een plugin of code die de load uitmaxt). Je kunt onze Hoasted Coding Service inschakelen om de oorzaak te vinden en aan te pakken, al dan niet in het kader van een optimalisatie.
- Toename bezoek als oorzaak Is het gewoon door bijvoorbeeld toegenomen bezoek en is de site al geoptimaliseerd, dan kun je het account beter upgraden naar meer resources.
- Soms is het ook nodig de PHP instellingen te verhogen als van de memory_limit en de max_input_vars, zie onze handleiding. In het geval van WordPress kun je ook proberen het geheugen wat geladen wordt te verhogen van de standaard 64M naar 256M door de volgende regel op te nemen in de wp-config.php
define( 'WP_MEMORY_LIMIT', '256M' );
509 Bandwidth Limit ExceededZodra er meer dan 100Gb dataverkeer is verbruikt door de site, kan deze melding verschijnen en in beeld komen bij de bezoekers. In het cPanel op Visitors > Awstats en dan in de linkerkolom bij de huidige maand op File Type (Bestandstype) kun je zien welke typen bestanden het grootste deel van het verkeer veroorzaakten.
Als je in het voorbeeld hierboven ziet dat het de afbeeldingen zijn die bijna alle verkeer uitmaken (jpg, png), adviseren we je een optimalisatie van de afbeeldingen te doen, zie onze handleidingen Hoasted Image Optimizer en Afbeeldingen uitserveren op basis van WebP voor zover je dat nog niet gedaan hebt. Daarmee zal de hoeveelheid data behoorlijk af kunnen nemen en je niet snel weer aan de limiet komen. Bijkomend voordeel: de website wordt sneller!
Je kunt ook de optimalisatie door ons uit laten voeren, zie de Hoasted optimalisatieservice informatie.
- Parse error: Syntax errorDeze fout treedt meestal op als je code wijzigt/toevoegt aan een php bestand. De foutmelding is dan bijvoorbeeld iets als:Parse error- syntax error, unexpected $end in /public_html/wp-content/themes/my-theme/functions.php on line 278 De oplossing is de code te verbeteren. Veelal gaat het om een ontbrekend haakje, een comma teveel of een onverwacht teken. Ook kan het erin plakken van een stukje code fout gaan, bijvoorbeeld als die code voorafgegaan wordt door <?php en het voorgaande <?php gedeelte nog niet is afgesloten met een ?> Het kan ook zijn dat het te plakken codegedeelte komt zonder de <?php en ?> aan begin of eind. In dat geval is het belangrijk dat toe te voegen of te zorgen dat de code binnen de <?php en ?> komt te staan. Ook moet elk gedeelte na een {-teken afgesloten worden door het }-teken, je kunt dus niet een tweede {-teken hebben voordat de eerste afgesloten is.
- Site blijft op Maintenance staan Dit kan gebeuren na een vastgelopen/onderbroken update van bijvoorbeeld WordPress. Ga met FTP (of de cPanel FileManager) naar de public_html en verwijder het .maintenance bestand. Let op: in FileManager eerst even op het tandwiel rechts boven klikken en aanvinken dat bestanden die met een punt beginnen (hidden files) toch getoond moeten worden.
- WordPress stuurt geen e-mail Kenmerk is bijvoorbeeld dat ingevulde formulieren niet aankomen. Oplossing: installeer even plugin Easy WP SMTP en stel de authenticatie voor verzending in. Daarmee worden vrijwel alle verzendproblemen opgelost. Instellingen:
- From Email Address: het afzender mailadres
- From Name: De naam die bij ontvangers in beeld moet komen.
- SMTP Host: Je uitgaande mail server, bijvoorbeeld hostingsecure.email.
- Type of Encryption: SSL
- SMTP Port: 465
- SMTP Authentication: Yes
- Username: je gebruikersnaam (bijvoorbeeld naam@domein.nl)
Password: je wachtwoord
Verstuur na het instellen vanuit de plugin een test. Aflevering is ook te controleren in cPanel > E-mail > Bezorging volgen (Track delivery) Een andere mogelijkheid is de WP Mail SMTP plugin, zie onze handleiding: https://support.hoasted.com/article/571-uitgaande-email-correct-instellen-op-wordpress
Fatal error | Memory
De melding is bijvoorbeeld
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 2348617 bytes) in /home/user/public_html/wp-includes/plugin.php on line xxx
Vaak een indicatie dat het pakket te klein is omdat het teveel resources nodig heeft. Optioneel nog op te lossen met aanpassing van memory in wp-config.php met bijvoorbeeld:
define( 'WP_MEMORY_LIMIT', '256M' );
- of via cPanel > Software > Select PHP Version > Switch to PHP Options de memory_limit van PHP te verhogen. Klik op het gewenste getal, vervolgens op Apply en dan op Save.
- Draai onderstaande twee commando’s in je Wordpress map om issues met bestandsrechten te fixen:
find . -type f -exec chmod 644 {} \; find . -type d -exec chmod 755 {} \;
- Dit is vaak ook de oplossing bij de melding: failed to write file to disk
- Website niet geïndexeerd door zoekmachines? Kijk als eerste even bij Instellingen > Lezen en check of het vinkje weg is bij Zoekmachine zichtbaarheid
- WordPress site URL fout en lukt niet die via Dashboard > Instellingen > Algemeen aan te passen? Voeg dan aan de wp-config.php de volgende regels toe:
define('WP_HOME','https://naam.nl'); define('WP_SITEURL','https://naam.nl');
- Website komt traag in beeldLees hiervoor onze handleiding met mogelijke oorzaken en oplossingen.
- Too many redirectsZie hiervoor de handleiding: WordPress error: Too many redirects
- Mediabibliotheek werkt niet goedAls de lijst van geüploade media wel in beeld komt, maar een afbeelding raadplegen vanuit een pagina niet meer lukt, zul je de volgende debugging stappen moeten doorlopen:
- Controle media map
- Controle WordPress core bestanden integriteit
- Controle .htaccess
- Controle bestandsrechten van alle bestanden
- Controle en test plugins
- Controle en test thema
Meer inzicht in resource usage
- https://wordpress.org/plugins/query-monitor/ (database verzoeken)
- https://wordpress.org/plugins/usagedd/ (algemene resource usage)
- https://wordpress.org/plugins/wp-page-load-stats/ (laadtijd inzicht)
- https://wordpress.org/plugins/performance-profiler/ (vinden resouce intensieve plugins)