We plaatsen een cookie voor Google Analytics om onze website te verbeteren

Met een cookie kun je advertenties personaliseren. Wij hanteren echter de strikte regels van de Autoriteit Persoonsgegevens. Surfgedrag houden we niet bij en we achtervolgen je ook niet met reclame.

Foutmeldingen: nutteloos kwaad of een waardevolle bron van informatie?

Foutmeldingen: nutteloos of waardevol?De meeste mensen die wel eens iets met computers hebben gedaan zullen ze wel kennen: foutmeldingen. Van die vervelende berichten die aangeven dat wat jij wilt, niet mogelijk is. Het liefst klik je ze meteen weer weg, in de hoop dat alles toch nog goed zou gaan. Helaas blijkt de praktijk vaak minder rooskleurig: de foutmelding komt gewoon terug, of het systeem reageert niet zoals je zou willen.

Hoewel foutmeldingen voor veel, met name beginnende, computeraars een afschrikkende werking hebben, zijn ze vaak helemaal niet zo eng als het lijkt. Ook met wat minder technische kennis is het mogelijk om hier heel waardevolle informatie uit te halen die nuttig kan zijn om het probleem op te lossen. In dit artikel zal ik proberen aan de hand van een aantal voorbeelden te laten zien dat ook voor de minder ervaren gebruiker nuttige informatie uit een foutmelding kan worden gehaald.

Algemene foutmeldingen

De meeste foutmeldingen zijn in het Engels. Dit komt omdat de meeste software gemaakt is voor de internationale markt en daar is Engels nu eenmaal de meest gebruikte taal. Veel mensen die het Engels niet zo goed beheersen, kiezen ervoor om bijvoorbeeld hun CMS in het Nederlands in te stellen. Hoewel ook foutmeldingen hierdoor soms beter leesbaar en begrijpelijker worden, kan het met lastige problemen ook tegen je werken.

Foutmeldingen: Beeldscherm vol errors

Een veelgebruikte manier om een oplossing te vinden, is namelijk door de foutmelding in een zoekmachine in te vullen en te kijken of meer mensen het probleem hadden en hoe zij dit hebben opgelost. Omdat de foutmelding in het Engels meer zal voorkomen dan in het Nederlands, is het aan te raden om bij fouten de taal in het Engels in te stellen. Dit zal vaak tot meer zoekresultaten leiden.

Als je wat meer kennis hebt van het systeem dat je gebruikt, is het slim om van tevoren goed na te denken over hoe het systeem precies werkt en wat er zoal fout kan gaan. Zo zal je op internet dikwijls mensen met dezelfde foutmelding tegenkomen, maar toch gaat het om een ander probleem. Het is dan de kunst om in te zien dat de genoemde oplossing voor jou niet zal werken en dat je door moet zoeken naar alternatieve oplossingen.

HTTP-statuscodes

Op je website kun je veel verschillende foutmeldingen tegenkomen. De meest fundamentele fouten zijn de zogenaamde HTTP-statuscodes. Dit zijn foutcodes die je kunt krijgen, zonder dat er ingewikkelde scripts of systemen op je hostingpakket staan. Het uiterlijk van de fout-pagina kan van website tot website verschillen en veel CMS’en gebruiken een eigen versie van een fout-pagina. De betekenis van het driecijferige nummer is echter altijd hetzelfde.

Zo is er de welbekende 404-code (Not Found), die zegt dat een pagina niet gevonden kon worden en dus waarschijnlijk niet bestaat. In dit geval wordt de statuscode 404 in de titel van de pagina weergegeven en het bestand wat niet bestaat (bestaatniet.html) wordt in de foutmelding vermeld.

Foutmeldingen: 404 Not Found

En andere foutmelding, die je minder vaak zult voorkomen, is de 403-code, oftewel: ‘Forbidden’. Zoals de naam al zegt, betekent het dat het bestand niet getoond mag worden. Dit kan duiden op onjuiste bestandsrechten, of een limitatie die door een webmaster is opgelegd.

Foutmeldingen: 403 Forbidden

De laatste HTTP-statuscode die ik hier wil noemen, is fout 500. Dit staat voor ‘Internal Server Error‘. Deze wordt getoond als er een dusdanig groot probleem is, dat de webserver geen pagina meer kan tonen. Door de ernst van het probleem wordt ook vaak weinig extra informatie gegeven. Dit maakt het probleem lastig om op te lossen. De oorzaak van dit probleem ligt vaak bij een fout in het bestand .htaccess, of onjuiste PHP-code.

Foutmeldingen: 500 Internal Server Error

PHP-fouten

Als je op je website gebruik maakt van PHP, dan kan het zijn dat je een minder generieke foutmelding krijgt, maar een foutmelding die betrekking heeft op de PHP-code die moet worden uitgevoerd. Deze foutmeldingen zijn vaak erg uitgebreid en de oorzaak van het probleem wordt er meestal duidelijk in uitgelegd. Hier ligt echter ook een gevaar: als een hacker een foutmelding op jouw site kan veroorzaken, kan hij door de informatie uit de foutmelding extra kennis krijgen over de opbouw van jouw website en daarmee makkelijker een gerichte aanval uitvoeren. Daarom worden PHP-fouten standaard verborgen.

Veel CMS’en, zoals WordPress en Joomla, hebben echter een debug-modus, waarmee je foutmeldingen kunt laten zien. Als je vreemde problemen op je website hebt, is het nuttig om eens te kijken of het inschakelen van de debug-modus je extra informatie kan geven. Als deze optie er niet is, kun je ook nog kijken of je in het PHP-bestand dat je aanroept, de error_reporting van PHP aan te zetten. Zet hiervoor op de eerste regel na <?php de code error_reporting(-1);'. Voor de veiligheid is het dus wel aan te raden om, na het oplossen van het probleem, in te stellen dat de foutmeldingen verborgen worden. Verder kunnen foutmeldingen (of waarschuwingen) op jouw website vreemd overkomen op je bezoekers.

Een voorbeeld van een fout die door PHP wordt gegenereerd, staat hieronder.

Foutmeldingen: PHP Syntax

Hoewel de melding, met een paar speciale tekens, er misschien meteen intimiderend uit ziet, staat er eigenlijk heel duidelijk wat er precies mis gaat: ‘Parse error‘ wijst erop dat de PHP-code niet goed verwerkt kon worden door de server en ‘syntax error‘ betekent dat er een fout in de syntax, eigenlijk de manier waarop in dit geval PHP-code wordt geschreven, zit.

Vervolgens zegt ‘unexpected ‘}’, expecting ‘,’ or ‘;’‘ dat er een accolade sluiten in de code staat, waar PHP een komma of een puntkomma verwacht. Tot slot meldt PHP ook nog waar het probleem zit: op regel 5 van het bestand fout.php. Als je dit bestand opent, zie je ook direct het probleem: regel 4, degene voor de onverwachte accolade, wordt niet afgesloten met een puntkomma, terwijl dat wel moet.

Foutmelding: PHP Syntax Source

Wat in PHP nog wel eens gebeurt, is dat één fout zorgt voor vervolg-fouten. Hierdoor kan het gebeuren dat er in werkelijkheid maar op één plaats een fout zit, maar dat er toch meerdere foutmeldingen worden gegeven. Een goed voorbeeld hiervan is de volgende code.

Foutmelding: PHP Header Source

Dit script probeert een bezoeker door te sturen naar een andere website. De URL naar de andere website staat in een bestand ‘target.txt‘ en wordt door middel van een file_get_contents() uitgelezen. Vervolgens wordt in de headers van de HTTP-aanvraag aangegeven dat de bezoeker moet worden doorgestuurd. Als het bestand ‘target.txt‘ niet bestaat (dat is 1 fout), ontstaan er toch twee foutmeldingen.

Foutmelding: PHP Header

De oorzaak hiervan, is dat de headers van een HTTP-aanvraag niet meer kunnen worden gewijzigd, als er al inhoud naar de bezoeker is verstuurd. Dat laat de tweede foutmelding ook duidelijk zien: de ‘header information‘ kan niet worden aangepast door het script ‘doorsturen.php‘. De foutmelding ook nog eens precies aan waar de output is gestart: op regel 3 van datzelfde bestand. En hoewel er geen echo() of vergelijkbare functie op die regel wordt aangeroepen, is er toch uitvoer gegenereerd.

Dit is de foutmelding, die erboven staat. En ook daarin staat weer precies wat er fout is gegaan: de functie file_get_contents op regel 3 van het bestand doorsturen.php kon het bestand ‘target.txt‘ niet openen, omdat er geen bestand of map met die naam bestaat. Wanneer alleen dat probleem wordt opgelost, zal ook de tweede fout verdwijnen (er wordt namelijk geen output meer gegenereerd) en zal de doorstuur-functie werken.

Foutmeldingen bij e-mail

Als je regelmatig e-mail verstuurt, kun je ook daarbij op foutmeldingen stuiten. In deze gevallen worden de foutmeldingen ook als e-mail verstuurd: een Delivery Status Notification. Deze melding bevat vaak erg nuttige informatie, die je vertelt dat degene aan wie je de e-mail hebt verstuurd, het bericht (nog) niet heeft ontvangen. Vaak zal de Delivery Status Notification afkomstig zijn van de SMTP-server die je hebt ingesteld in je e-mailprogramma, maar het kan ook zijn dat de melding komt van de mailserver waarop je het e-mailadres probeert te bereiken.

De meest voorkomende melding is de melding dat een e-mailadres niet bestaat.

Foutmeldingen: E-mail Delivery Notification

Ook dit bericht kan op het eerste gezicht weer erg intimiderend overkomen. Belangrijk is echter, om hier eerst te filteren. Net iets boven het midden staat ‘—– Original message —–‘. Alles hieronder gaat over het bericht wat ik heb verstuurd. Aangezien ik nog heel goed weet om welk bericht het ging (ik heb hem twee minuten geleden verstuurd) is deze informatie nu niet relevant. Met name e-mailberichten met bijlages kunnen onder deze streep erg veel (rare) tekens en berichten tonen, maar die kun je dus gewoon negeren. De regels waar het echt om gaat, beginnen in dit geval met ‘550-5.1.1‘: hier wordt uitgelegd dat het e-mailaccount niet bestaat en dat het adres opnieuw gecontroleerd moet worden.

Een andere melding die soms voorkomt, is een bounce door een blacklist-vermelding. Op internet worden verschillende zwarte lijsten bijgehouden, waarop IP-adressen van servers staan die veel spam versturen. Omdat de kans groot is dat een e-mailbericht van die server spam is, wordt de e-mail van servers op die lijsten geweigerd. Hieronder staat een (fictief) voorbeeld van iemand die vanaf een mailserver van ‘fictieve-domeinnaam.nl‘ een mail probeert te versturen naar ‘iemand@andere-domeinnaam.nl‘ op een server van Antagonist.

From: MAILER-DAEMON@mailserver.fictieve-domeinnaam.nl
[mailto:MAILER-DAEMON@mailserver.fictieve-domeinnaam.nl]
Sent: vrijdag 13 juni 2013 15:00
To: iemand@andere-domeinnaam.nl
Subject: failure notice

Hi. This is the qmail-send program at mailserver.fictieve-domeinnaam.nl.
I'm afraid I wasn't able to deliver your message to the following addresses.
This is a permanent error; I've given up. Sorry it didn't work out.

:
141.138.168.11 does not like recipient.
Remote host said: 550-Email message has been rejected because your email
server (123.456.78.90) 550-is listed on BARRACUDA CENTRAL as a known spam
source. See 550 http://www.barracudacentral.org/ for more information.
Giving up on 141.138.168.11.

--- Below this line is a copy of the message.

<Veel tekst>

De melding geeft aan dat het bericht niet bezorgd kon worden en dat het een permanente fout betreft: de e-mail zal niet meer bezorgd worden. De reden hiervoor staat eronder: de remote host (in dit geval 141.138.168.11, oftewel een server van Antagonist) heeft het bericht geweigerd (rejected) omdat het IP-adres van de mailserver (die van fictieve-domeinnaam.nl) op een blacklist staat als bron van spam.

Om dit probleem op te lossen, moet de beheerder van ‘mailserver.fictieve-domeinnaam.nl‘ dus zorgen dat zijn IP-adres 123.456.78.90 weer van de blacklist wordt gehaald. Ook in deze bounce staat een streep, die aangeeft waar het oorspronkelijke bericht begint (Below this line is a copy of the message). Het bericht heb ik hier weggelaten, omdat het veel tekst bevat. Omdat deze tekst niet relevant is voor het vinden van het probleem, kun je dus ook zelf in dergelijke gevallen stoppen met lezen bij de markering.

Tot slot

Hopelijk is met dit artikel duidelijk geworden dat foutmeldingen geen enge teksten zijn die enkel voor technisch onderlegde mensen leesbaar zijn. Wanneer je rustig de tijd neemt om het bericht te lezen en te begrijpen, kun je vaak snel achterhalen waar je het probleem moet zoeken. Helaas zijn er ook software-makers die nauwelijks informatie in hun foutmeldingen zetten, zoals enkel ‘Er is een fout opgetreden‘. Hoewel de melding duidelijk leesbaar is, kun je hier natuurlijk niet zoveel mee. Een lange foutmelding met veel informatie heeft, bij het oplossen van problemen, dus duidelijk de voorkeur.

Mocht je onverhoopt toch een foutmelding tegenkomen waar je geen raad mee weet, dan staat onze helpdesk natuurlijk altijd voor je klaar. Het is dan wel sterk aan te raden om de exacte foutmelding mee te sturen, want zoals je ziet staat er vaak veel nuttige informatie in. Als je zelf niet weet welke informatie nuttig of niet is, maak dan een screenshot van de hele melding. Je weet dan zeker dat de helpdesk over alle informatie beschikt die er te verkrijgen is.

Deel dit blog
Erwin Bronkhorst
Erwin Bronkhorst

Erwin is sinds april 2010 werkzaam op de support-afdeling van Antagonist. Daar komt één van zijn hobby's goed van pas: het schrijven van eenvoudige PHP-scripts. Hij volgt momenteel de master Embedded Systems aan de Universiteit Twente, nadat hij daar een bachelor Electrical Engineering heeft afgerond.

Artikelen: 1

Geef een reactie

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

Sterren Webhosting: 5 sterren uit 5.830 reviews

60.000+ webhostingpakketten actief
Bij de beste webhosters in MT1000 en Emerce 100