EHBW: Eerste Hulp Bij WordPress ongelukken

Als je WordPress website niet helemaal goed werkt of zelfs onbereikbaar is vanwege een foutmelding, is dat natuurlijk iets wat je zo snel mogelijk wilt oplossen. In deze blogpost laat ik zien hoe je de oorzaak van de meest voorkomende WordPress foutmeldingen kunt vinden. Denk daarbij aan een "500 internal server error" en de beruchte "white screen of death". Ook wij gebruiken deze werkwijze vaak om WordPress problemen bij onze klanten te troubleshooten.

Ik behandel de volgende veel voorkomende WordPress foutmeldingen:

  • 500 internal server error
  • White screen of death (wit scherm)
  • De "error establishing a database connection" foutmelding
  • 503 service unavailable

In deze blogpost laten we voor de gevorderde WordPress gebruiker ook zien hoe je de WP-CLI (WordPress Command Line Interface) gebruikt, waarmee je allerlei handelingen zoals het (de-)installeren en updaten van plugins kunt uitvoeren, ook al kun je niet meer inloggen op wp-admin. Let's go!

500 internal server error

500 internal server error voor een WordPress website

De meest voorkomende foutmelding bij WordPress websites is de "500 internal server error". De gehele website ligt er dan uit, en je hebt vaak niet direct een idee wat er aan de hand kan zijn - omdat je alleen maar de "500 internal service error" ziet staan als je de website bezoekt. Er kan bijvoorbeeld een update zijn misgegaan, of een plugin zorgt voor problemen waardoor de gehele website niet meer werkt.

Toch is het relatief eenvoudig om te ontdekken wat de onderliggende oorzaak van de 500 foutcode is. De onderstaande stappen laten zien hoe:

  1. Login op het cPanel control panel van je hostingpakket bij ons, en open de File Manager (Bestandsbeheer) optie. Open vervolgens de map waarin de WordPress website staat. Vaak is dat de "public_html" map, maar soms kan het ook een andere map zijn. Je mag natuurlijk ook via FTP inloggen, als je dat fijner vindt werken.
  2. Als je WordPress website zelf een 500 error laat zien, dan kun je in deze map een bestandje zien staan met de naam "error_log". Als je problemen hebt om in het wp-admin beheergedeelte te komen, dan kun je dit "error_log" bestand vinden in de wp-admin map. Als in beide mappen geen "error_log" bestand te zien is, kun je doorgaan naar het volgende onderwerp over "white screen of death" in deze blogpost.
  3. Selecteer het "error_log" bestand, en klik vervolgens op de Edit (Bewerken) knop in het menu. Het bestand opent nu, zodat je de inhoud ervan kunt bekijken.
  4. Dit "error_log" bestand toont allerlei PHP foutmeldingen die optreden tijdens het tonen van je WordPress website. Je moet hier met name kijken naar de "fatal errors"; die veroorzaken namelijk de 500 error.
  5. In de regel met de foutmelding wordt vrijwel altijd een path genoemd, waaraan je kunt zien welke plugin of welk thema de veroorzaker is. Als je bijvoorbeeld iets van

    /home/gebruikersnaam/public_html/wp-content/plugins/plugin-abc/...

    ziet staan, dan is de plugin "plugin-abc" de boosdoener. En als je iets van

    /home/gebruikersnaam/public_html/wp-content/themes/theme-xyz/...

    ziet staan, dan is het thema "theme-xyz" de boosdoener.
  6. De makkelijkste manier om de 500 error op te lossen, is om het thema of plugin uit te schakelen. Vervolgens kun je een aantal dingen doen om het thema of plugin weer actief te krijgen:
    - Update de plugin of thema;
    - Herinstalleer de plugin of thema;
    - Vind een alternatieve plugin of thema;
    - Neem contact op met de maker van de plugin of thema, en stuur de foutmelding in het "error_log" bestand door en vraag wat daar een oplossing voor kan zijn.

White screen of death (wit scherm)

WordPress White Screen of Death (wit scherm)

Naast de eerder genoemde "50o internal server error", komt de "white screen of death" ook wel eens voor bij WordPress websites. De website toont dan niets anders dan een witte pagina. Soms kun je de oorzaak vinden via het "error_log" bestand, zoals ik hierboven bij de stappen voor de 500 error heb beschreven. Ik maak echter ook wel mee dat er helemaal geen "error_log" bestand wordt aangemaakt. Dan wordt het vinden van de oorzaak natuurlijk lastiger. Heb je dan een professionele WordPress Sherlock Holmes nodig? Nee, ook in dit geval kun je vaak zelf - met een klein beetje moeite - de oorzaak vinden.

De oorzaak van de "white screen of death" is heel vaak een plugin of thema. Omdat je niet meer in het wp-admin beheergedeelte kunt komen, leg ik hieronder uit hoe je handmatig een plugin of thema kunt uitschakelen:

  1. Login op het cPanel control panel van je hostingpakket bij ons, en open de File Manager (Bestandsbeheer) optie. Open vervolgens de map waarin de WordPress website staat. Vaak is dat de "public_html" map, maar soms kan het ook een andere map zijn. Je mag natuurlijk ook via FTP inloggen, als je dat fijner vindt werken.
  2. Open vervolgens de "wp-content" map. Hierin zie je onder andere een map staan met de naam "plugins" - hierin staan alle plugins opgeslagen - en een andere map met de naam "themes" - hierin staan alle thema's opgeslagen. Met deze twee mappen gaan we aan de slag. We beginnen met de "plugins" map, omdat een plugin vaker de boosdoener is dan een thema - is mijn ervaring.
  3. Hernoem de "plugins" map in bijvoorbeeld: "plugins-uit". Hiermee schakel je in 1x alle plugins uit op je WordPress website.
  4. Probeer vervolgens of je weer kunt inloggen op het wp-admin beheergedeelte. Kun je weer inloggen? Ga dan naar "plugins" aldaar. Je zult een melding zien staan dat alle plugins zijn uitgeschakeld. Hernoem de "plugins-uit" map weer naar het oorspronkelijke "plugins". Schakel vervolgens alle plugins 1 voor 1 weer in, en check elke keer of de "white screen of death" weer optreedt. Je hebt zo eventueel de plugin die de boosdoener is gevonden. Om weer in te kunnen loggen, kun je de map van deze ene plugin hernoemen - deze kun je in de wp-content/plugins/ map vinden.
  5. Als je nog niet kunt inloggen na het hernoemen van de plugins-map, dan kun je proberen om de map van je actieve thema en eventuele child thema te hernoemen. Deze thema-mappen kun je zien staan in de wp-content/themes/ map.
  6. Zit het probleem in een bepaalde plugin of thema? We gaan dan proberen om deze plugin of thema te updaten. Soms kan een probleem in een update verholpen zijn. Nadat je bent ingelogd op het wp-admin beheergedeelte, en naar de "plugins" of "thema's" optie bent gegaan - zul je daar zien dat de desbetreffende plugin of thema is uitgeschakeld. Hernoem nu de map-naam van de uitgeschakelde plugin of thema (die kun je vinden in wp-content/plugins/ of in wp-content/themes/) weer naar de oorspronkelijke naam. Kijk vervolgens of er een update beschikbaar is, en zo ja - installeer deze.
  7. Mocht er geen update beschikbaar zijn van de plugin of thema, controleer dan wanneer de plugin of thema voor het laatst is bijgewerkt. Mocht dit al vele maanden of zelfs jaren geleden zijn, dan is het vaak de beste optie om op zoek te gaan naar een vervangende plugin of thema - omdat er geen updates meer worden uitgebracht voor de plugin of thema die problemen veroorzaakt.
  8. Mocht de plugin of thema nog wel recentelijk zijn bijgewerkt, dan kun je proberen om de plugin of thema opnieuw te installeren. Doe dit door de specifieke map van de plugin of thema (die kun je vinden in wp-content/plugins/ of in wp-content/themes/) te verwijderen. Vervolgens kun je de plugin of thema weer opnieuw installeren. Let er op dat je de plugin of thema niet via wp-admin verwijderd, omdat dan eventuele instellingen ook worden verwijderd.
  9. Mocht een herinstallatie ook niet helpen, dan raden we om contact te zoeken met de maker van de plugin of thema voor hulp.

Error establishing a database connection

WordPress website met "error establishing a database connection" foutmelding

Een WordPress website slaat gegevens op in een MySQL database. Mocht WordPress geen connectie kunnen maken met die MySQL database, dan krijg je de "error establishing a database connection" foutmelding te zien.

De instellingen om verbinding te maken met de MySQL database zijn in een bestand met de naam wp-config.php opgeslagen. Er kan dus iets mis zijn met deze instellingen, of met de MySQL database zelf. Laten we dat stap-voor-stap controleren:

  1. Login op het cPanel control panel van je hostingpakket bij ons, en ga naar de MySQL databases optie.
  2. Noteer de databasenaam en de daaraan gekoppelde database-gebruikersnaam die is aangemaakt. Je zult zien dat zowel de databasenaam als ook de database-gebruikersnaam altijd met de gebruikersnaam van je hostingpakket bij ons beginnen, gevolgd door een laagliggend-streepje. Bijvoorbeeld: hostinguser_databasenaam.
  3. Controleer hier ook of de database-gebruiker wel aan de database gekoppeld is. Als dat namelijk niet het geval is, kun er niet op de MySQL database worden ingelogd. Hoe je een database-gebruiker koppelt aan een database, kun je hier lezen.
  4. Ga terug naar het beginscherm van cPanel, en open vervolgens de File Manager (Bestandsbeheer) optie. Open vervolgens de map waarin de WordPress website staat. Vaak is dat de "public_html" map, maar soms kan het ook een andere map zijn. Je mag natuurlijk ook via FTP inloggen, als je dat fijner vindt werken.
  5. Selecteer het wp-config.php bestand, en klik vervolgens op de Edit (Bewerken) knop in het menu. Het bestand opent nu, zodat je de inhoud ervan kunt bekijken.
  6. Controleer allereerst of de DB_HOST instelling op "localhost" staat. Deze regel ziet er als volgt uit:

    define('DB_HOST', 'localhost');
  7. Controleer daarna of de genoteerde databasenaam bij DB_NAME staat. Deze regel ziet er zo uit:

    define('DB_NAME', 'hostinguser_databasenaam');
  8. Controleer daarna of de genoteerde database-gebruikersnaam bij DB_USER staat. Deze regel ziet er zo uit:

    define('DB_USER', 'hostinguser_databasegebruikersnaam');
  9. Als de bovenstaande drie instellingen in wp-config.php wel goed stonden, dan kan het zijn dat het database-wachtwoord niet klopt. Het ingestelde wachtwoord kun je in deze regel zien staan:

    define('DB_PASSWORD', 'xxxxxxxxx');

    Kopieer dit wachtwoord, en wijzig het wachtwoord van de database-gebruiker onder de "MySQL databases" optie van cPanel. Zo weten we zeker dat het wachtwoord juist is ingesteld.
  10. Als het goed is, moet de "error establishing a database connection" foutmelding nu zijn verdwenen. Zo niet, neem dan even contact met ons op - dan kijken we even met je mee.

503 service unavailable

De 503 service unavailable foutmelding op een WordPress website

Soms toont een WordPress website - vaak tijdelijk - een "503 service unavailable" foutmelding. Dit betekent dat de CPU- of geheugenlimieten van het hostingpakket zijn bereikt. Met andere woorden: je WordPress website draait te zwaar, en gebruikt te veel CPU en/of geheugen. Elke hostingpakket draait bij ons in een afgescheiden hostingomgeving met een eigen CPU- en geheugencapaciteit, om zo een goede performance van je website te kunnen garanderen.

Let er voor de duidelijkheid op dat dit dus niets te maken heeft met de opslagruimte-limiet van je hostingpakket; je WordPress-website is dus niet "te groot". Let er verder op dat het dus ook niet de hostingserver is die het zwaar heeft; het gaat hier echt om je website zelf.

Resource usage in cPanel

Je kunt in het cPanel control panel onder de optie "Resource usage" controleren of je inderdaad de limieten hebt bereikt. Bij "snapshots" aldaar kun je dan controleren wat er op dat moment gebeurde op je hostingpakket, wat kan helpen bij het troubleshooten.

X-Ray performance tool in cPanel

Daarnaast kun je ook onze nieuwe X-Ray optie in het cPanel control panel gebruiken. Hiermee kun je analyseren welke requests, MySQL queries, en WordPress plugins voor vertraging of problemen kunnen zorgen. Je kunt meer nalezen over X-Ray op: https://www.xxlhosting.nl/blog/php-x-ray-website-performance-tool

WordPress core controleren en herinstalleren via WP-CLI

Wist je dat WordPress ook een command line interface heeft? Deze heet WP-CLI, wat staat voor WordPress Command Line Interface. WP-CLI kan handig zijn om bepaalde acties uit te voeren zonder dat je daarbij toegang nodig hebt tot het wp-admin beheergedeelte.

Eerst gaan we kijken hoe je de "core" bestanden van WordPress kunt controleren op integriteit, en eventueel opnieuw kunt installeren. Hierbij laten we dus alle thema's, plugins, instellingen en inhoud van de WordPress website staan, maar herinstalleren we alleen de basisbestanden van WordPress. Dit kan handig zijn als deze bestanden corrupt zijn geraakt, bijvoorbeeld door een foutieve handeling of een hack.

  1. Login op het cPanel control panel, en ga naar de Terminal optie. Je mag eventueel ook inloggen via SSH, mocht je dat fijner vinden werken.
  2. Ga vervolgens de map waarin de WordPress website staat. Vaak is dat de "public_html" map, maar soms kan het ook een andere map zijn:

    cd public_html
  3. Vervolgens heeft WP-CLI een commando om alle basisbestanden van WordPress te checken op integriteit. Zo kun je snel ontdekken of er bestanden zijn aangepast, ontbreken of zijn toegevoegd. Voer het volgende commando uit:

    wp core verify-checksums
  4. Mocht blijken dat de basisbestanden van WordPress niet meer kloppen, dan kun je WordPress core herinstalleren. Verwijder eerst alle bestanden van deze WordPress installatie, maar laat het wp-config.php bestand en de wp-content map staan. Je kunt dit via de terminal doen, of gebruik de File Manager optie in cPanel.
  5. Installeer vervolgens WordPress core opnieuw met het volgende commando:

    wp core download --skip-content --force
  6. Zo heb je WordPress core opnieuw geinstalleerd. Als laatste stap raden we aan om ook het wp-config.php bestand en de wp-content map te checken op verdachte aanpassingen.

Plugins, thema's en WordPress core updaten via WP-CLI

Ook plugins en thema's kun je via WP-CLI snel en eenvoudig updaten, zonder dat je toegang nodig hebt tot wp-admin.

  1. Login op het cPanel control panel, en ga naar de Terminal optie. Je mag eventueel ook inloggen via SSH, mocht je dat fijner vinden werken.
  2. Ga vervolgens de map waarin de WordPress website staat. Vaak is dat de "public_html" map, maar soms kan het ook een andere map zijn:

    cd public_html
  3. Als eerste kunnen we WordPress core updaten met:

    wp core update
  4. Vervolgens kunnen we alle plugins updaten met:

    wp plugin update --all
  5. En als laatste updaten we alle thema's met:

    wp theme update --all

Mocht je vragen neem hieronder contact met ons op!

Klik hier om contact op te nemen