Wit scherm of 500 error? Bekijk het logboek!

Paniek, je website doet het niet! Een wit scherm, hoe komt dat nou? Natuurlijk los je het makkelijk op door één van onze backups terug te zetten. Alleen, de vraag blijft waarom dit nu ineens is ontstaan. Daarom leg ik je graag uit hoe je aan de hand van het logboek herleidt waarom een website het niet meer doet. En belangrijker, hoe je het verhelpt!

Wit scherm of 500 error? Bekijk het logboek!

Bij een niet werkende website kunnen je bezoekers bijvoorbeeld een wit scherm of 500 Internal Server Error te zien krijgen. De oorzaak is vaak te wijten aan een onderdeel van je website die niet meer zoals verwacht functioneert. Er kan een PHP-limiet zijn bereikt of een achterliggend script van je website kan een programmeerfout bevatten.

Meestal ontstaat het gedrag na een (automatische) update. Deze update van een thema of plugin van een WordPress-website bevat dan bijvoorbeeld een per ongeluk gemaakte programmeerfout. Met een backup de aanpassingen terugdraaien, is de snelste oplossing. Je weet alleen dan natuurlijk niet waar het nu precies aan lag…

Hier komt het de logboek in het spel. Zodra er een wit scherm of 500 error optreedt, wordt er automatisch een melding in de logboeken bijgehouden. Ook het tijdstip wordt genoteerd. Als beheerder van een website heb je dan een bron van informatie om te kunnen herleiden wat er is misgegaan.

WordPress Site Health
De ontwikkelaars van WordPress hebben voor versie 5.2 de feature Site Health gepland. Gebruik je bijvoorbeeld een gedateerde PHP-versie of plugin, dan krijg je binnen WordPress een melding met advies. Handig!

Waar kun je het logboek vinden?

De logboeken met foutmeldingen kun je in DirectAdmin terugvinden, de technische beheeromgeving van je hostingpakket. Als je daar bent ingelogd, klik je op ‘Site Summary / Statistics / Logs’. Deze optie is te vinden onder de categorie ‘Your Account’.

De Error Log bekijken in DirectAdmin.

Vervolgens kun je in de eerste tabel onder ‘Log Type’ de Apache Error Log bekijken. Klik op ‘Full Error log’ als je alle fouten wilt zien of kies voor ’10 lines’ of ‘100 lines’ als je enkel de laatste 10 of 100 regels wilt bekijken. Dat laatste is handig als je logboek veel informatie bevat en je overzicht wenst.

Foutmeldingen begrijpen

Nu je weet waar je het logboek kunt vinden, is het handig om te begrijpen welke type meldingen er precies bestaan. Zo weet je wat je wel of geen prioriteit moet geven. Gelukkig is niet alles wat in de Error Log staat kritiek.

  • Notice | Valt vaak te negeren. Er is in het script iets aangetroffen wat op een fout kan duiden, maar wat ook bij normaal verloop kan gebeuren.
  • Warning | Niet kritiek, wel belangrijk. Het PHP-script wordt alsnog uitgevoerd, maar kan anders reageren dan verwacht.
  • Error| Kritieke foutmelding. De uitvoer van het achterliggende PHP-script stopt en bezoekers krijgen een wit scherm te zien.

Regels in het logboek lezen

Laten we kijken naar een voorbeeld van een foutmelding. Gaat er iets mis, dan kun je bijvoorbeeld de onderstaande regels in de Error Log aantreffen.

[Thu Jan 24 15:44:28.316284 2019] [lsapi:error] [pid 22524 :tid 1548341139101] [client 141.138.168.211:54345] [host www.voorbeeld.nl] PHP Parse error: syntax error, unexpected 'require' (T_REQUIRE) in /home/deb1234/domains/voorbeeld.nl/public_html/wp-content/plugins/voorbeeld-plugin/class-voorbeeld.php on line 48

Je kunt dit dan als volgt interpreteren.

[Exacte datum en tijd van het probleem] [lsapi:fout] [proces ID PHP: Unix tijd in milliseconden] [IP-adres van bezoeker:externe poort] [de domeinnaam waar het gebeurt] {PHP type fout} {wat ging er fout} {locatie van het script waarin de fout zich voordeed} {de regel in het script waar de fout zich voordeed}

Veelvoorkomende foutmeldingen

Iedere fout staat op zich, maar sommige komen relatief vaak voor. Daardoor zijn deze fouten meestal ook makkelijk te verhelpen. De fouten die het vaakst voorkomen, behandel ik aan de hand van een fictieve WordPress-plugin. Ze kunnen ook in andere systemen of zelfgeschreven PHP-code voorkomen.

Wit scherm of 500 error? Bekijk het logboek!

Call to undefined function

De fout geeft aan dat een functie van het PHP-script ‘class-voorbeeld.php’ niet werkt op regel 48. Als tijdelijke oplossing kun je de bovenliggende plugin ‘voorbeeld-plugin’ uitschakelen. Vervolgens kun je de foutmelding aan de makers van de plugin voorleggen en vragen of ze het kunnen oplossen.

[Thu Jan 24 15:44:28.316284 2019] [lsapi:error] [pid 12524 :tid 1548341139101] [client 141.138.168.211:54345] [host www.voorbeeld.nl] Backend fatal error: PHP Fatal error: Call to undefined function voorbeeld() in /home/deb1234/domains/voorbeeld.nl/public_html/wp-content/voorbeeld-plugin/class-voorbeeld.php on line 48

No such file or directory

Deze niet kritieke fout geeft aan dat het bestand ‘class-voorbeeld2.php’ van de plugin ‘voorbeeld-plugin’ niet kan worden gevonden. Meestal ontstaat dit als een bestand van een plugin ontbreekt of per ongeluk op de verkeerde plek is geüpload. Overweeg om de plugin tijdelijk uit te schakelen of controleer of alle bestanden wel op de juiste locatie aanwezig zijn.

[Thu Jan 24 15:44:28.316284 2019] [lsapi:notice] [pid 22524 :tid 1548341139101] [client 141.138.168.211:54345] [host www.voorbeeld.nl] PHP Warning require(/home/deb1234/domains/voorbeeld.nl/public_html/wp-content/voorbeeld-plugin/class-voorbeeld2.php): failed to open stream: No such file or directory in /home/deb1234/domains/voorbeeld.nl/public_html/wp-content/voorbeeld-plugin/class-voorbeeld.php on Line 3

Allowed Memory Size of 100663296 Bytes Exhausted

De melding geeft aan dat het script ‘class-voorbeeld.php’ van de plugin ‘voorbeeld-plugin’ tegen de ingestelde PHP memory_limit (geheugenlimiet) aanloopt. Dit gebeurt met name bij zwaardere scripts en plugins. Je kunt de memory_limit verhogen om dit op te lossen.

Zet deze geheugenlimiet overigens nooit zomaar (te) hoog. Het gedrag kan ook wijzen op een programmeerfout in een PHP-script, waardoor deze ‘oneindig’ geheugen wil opslokken. Ga ten slotte ook na of het script qua PHP-instellingen verdere eisen heeft.

[Thu Jan 24 15:44:28.316284 2019] [lsapi:error] [pid 22524 :tid 1548341139101] [client 141.138.168.211:54345] [host www.voorbeeld.nl] Fatal Error: Allowed Memory Size of 100663296 Bytes Exhausted in /home/deb1234/domains/voorbeeld.nl/public_html/wp-content/voorbeeld-plugin/class-voorbeeld.php on Line 48

“continue” targeting switch is equivalent to “break”

Deze niet kritieke fout ontstaat als PHP-code niet wordt begrepen. Dit probleem wordt meestal veroorzaakt, doordat de geschreven PHP-code nog niet goed met met PHP 7 overweg kan. Je website gedraagt zich anders dan verwacht en bepaalde onderdelen worden niet goed getoond. Overweeg dan om de plugin uit te zetten of kies (tijdelijk) een oudere PHP-versie.

[Thu Jan 24 15:44:28.316284 2019] [lsapi:error] [pid 22524 :tid 1548341139101] [client 141.138.168.211:54345] [host www.voorbeeld.nl] Backend log: PHP Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/deb1234/domains/voorbeeld.nl/public_html/wp-content/voorbeeld-plugin/class-voorbeeld.php on line 126

ReceiveAckHdr: nothing to read from backend

De melding zit iets anders in elkaar. Het geeft aan dat PHP een achterliggend script geheel is gestopt, omdat deze door een kritiek probleem is vastgelopen. Dit is een relatief verwarrende foutmelding en heeft vaak te maken met het bereiken van PHP-limieten en -instellingen, waaronder de max_execution_time.

Doorgaans is een plugin of script met afwijkende PHP-eisen de oorzaak. Het is slim om na te gaan of de PHP-instellingen moeten worden aangepast. Houd er ook rekening mee dat dit gedrag kan komen door en inefficiënt script. Waar mogelijk is het aanbevolen dit soort zware PHP-scripts aan te passen, zodat de taken in kleinere stukjes worden uitgevoerd.

[Thu Jan 24 15:44:28.316284 2019] [lsapi:error] [pid 22524 :tid 1548341139101] [client 141.138.168.211:54345] [host www.voorbeeld.nl] Error on sending request(GET /wp-admin/admin.php?page=wc-settings HTTP/2.0); uri(/wp-admin/admin.php?page=wc-settings) content-length(0): ReceiveAckHdr: nothing to read from backend (LVE ID 541), check http://docs.cloudlinux.com/mod_lsapi_troubleshooting.html

Wijzer dankzij inzicht

Hopelijk heb je zo een stukje meer inzicht. Zie je een wit scherm of 500 error, dan is het logboek je beste vriend! Zoek je nog een betrouwbare webhost? En wil je de zekerheid van volautomatische backups? Neem eens een kijkje bij onze hostingpakketten, leg je domeinnaam vast en start je online succes!

Bestel hostingpakket →

P.S. Wil je op de hoogte blijven van alle artikelen, updates, tips en trucs die verschijnen op ons blog? Dat kan! Via RSS, per e-mail, het liken op Facebook, het +1’en op Google+ of het volgen op Twitter.

Deel Deel Deel Deel

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *