HTTP Error 500: wat is het probleem?

  1. Home
  2. Handboek
  3. HTTP Error 500

Oorzaken van en oplossingen voor de 500 Internal Server Error

HTTP-statuscodes geven aan of een aanvraag op internet succesvol was en, zo niet, wat de fout is. De informatie die foutmeldingen geven is echter niet altijd eenduidig. Dat geldt in het bijzonder voor ‘500 Internal Server Error’. Deze foutmelding verschijnt als er een fout is opgetreden bij het verbinden met de server, waardoor de opgevraagde site niet kan worden geopend. Hoe deze fout is ontstaan, is echter niet meteen te zien. Gelukkig zijn er verschillende manieren om de oorzaak te achterhalen. Wij zetten de oorzaken van veelvoorkomende fouten op een rij en vertellen je wat je het beste kunt doen als je te maken krijgt met de HTTP fout 500.


Wat houdt de Internal Server Error in?

Met statuscodes deelt de webserver aan de browser (client) van een internetgebruiker mee of een aanvraag – dus het oproepen van een website – succesvol was of niet. Wanneer de browser de status 200 ontvangt, weet hij dat alles goed is gegaan. De gebruiker krijgt deze melding niet te zien; in plaats daarvan verschijnt de aangevraagde content. Bij de codes 400 en 500 is het een ander verhaal. Een code 400 duidt op een fout bij de client, lees er hier (400), hier (404) en hier (403) meer over. Een code 500 wijst dan weer op een fout bij de server. De Internal Server Error 500 is een verzamelstatuscode voor serverfouten. Daarom is op het eerste gezicht ook niet te zien waar de fout daadwerkelijk zit. Als gebruiker weet je alleen dat de server een onverwachte fout meldt. Lees je graag meer over specifieke 500-foutmeldingen? Dat kan ook bij ons, namelijk over de 502-fout, de 503-fout en de 504-fout.

Wanneer de server de Microsoft Information Service (Microsoft IIS) heeft geïnstalleerd, wordt de foutcode wel gespecificeerd. De cijfers achter de komma geven meer informatie over de oorzaak van de fout:

  • 500.0: een module of een ISAPI is fout.
  • 500.11: een applicatie wordt net afgesloten op de server.
  • 500.12: een applicatie wordt net opnieuw opgestart op de server.
  • 500.13: de webserver is op het moment overbelast.
  • 500.15: een rechtstreekse aanvraag voor de (optionele) data global.asax is niet toegestaan.
  • 500.19: de configuratiegegevens zijn ongeldig.
  • 500.21: een module wordt niet herkend.
  • 500.22: een HTTP-moduleconfiguratie (binnen een ASP.NET-webapplicatie) is niet bruikbaar in de beheerde pipelinemodus.
  • 500.23: een HTTP-handlerconfiguratie (binnen een ASP.NET-webapplicatie) is niet bruikbaar in de beheerde pipelinemodus.
  • 500.24: een identiteitswisselconfiguratie (voor ASP.NET) is niet bruikbaar in de beheerde pipelinemodus.
  • 500.50: terwijl de RQ_BEGIN_REQUEST-melding werd afgehandeld, is een herschrijffout opgetreden.
  • 500.51: terwijl de GL_PRE_BEGIN_REQUEST-melding werd afgehandeld, is een herschrijffout opgetreden.
  • 500.52: terwijl de RQ_SEND_RESPONSE-melding werd afgehandeld, is een herschrijffout opgetreden.
  • 500.53: terwijl de RQ_RELEASE _REQUEST_STATE-melding werd afgehandeld, is een herschrijffout opgetreden.
  • 500.100: in de ASP-engine is een fout opgetreden.

Wat zijn de oorzaken van een Error 500?

De ‘Internal Server Error’ kan ontstaan bij de verwerking van de aanvraag door de webserver. De verzamelstatuscode omvat alles wat onverwacht bij de server kan gebeuren en dan kan verhinderen dat de website wordt getoond. Waarschijnlijk treedt de Server Error 500 op, omdat er in de configuratie van de webserver een fout is opgetreden. Hier een overzicht van oorzaken van veelvoorkomende fouten:

  • Permissiefout: de bevoegdheden voor de hoofdbestanden en -mappen zijn niet correct afgegeven.
  • PHP-timeout: het script probeert toegang te krijgen tot een externe bron en krijgt daarbij te maken met een timeout.
  • Verkeerde code in .htaccess: de structuur in een .htaccess-bestand kan fout zijn.
  • Fout in de syntax of in de code in CGI-/Perl-scripts: soms komen fouten voor in scripts. Vooral paden kunnen fouten bevatten.
  • PHP-memory limit: een proces overschrijdt het werkgeheugen en kan daarom niet correct worden uitgevoerd.

Bij WordPress websites of andere contentmanagementsystemen kan ook de installatie van een foutieve of niet-compatibele extensie de oorzaak zijn: plug-ins en themes – met name aangeboden door derden – kunnen een negatief effect hebben op de gehele website.


Zo kunnen webmasters de 500 Internal Server Error oplossen

Kunnen de bezoekers van jouw website geen content meer zien en wordt in plaats daarvan de 500 Server Error weergegeven? Het is belangrijk om als beheerder direct aan de slag te gaan met dat probleem; het schrikt niet alleen websitebezoekers af, maar Google kan je website ook laten dalen in de zoekresultaten. Controleer, voordat je maatregelen gaat nemen, eerst of je server nog wel werkt. Als dat niet het geval is, is het noodzakelijk om snel contact met je hostingprovider op te nemen.

Wanneer een interne fout is opgetreden, kijk je eerst naar de logbestanden: bij Linux-servers moeten alle foutmeldingen kunnen worden gevonden onder /var/log/httpd/error_log. Het is daarbij nuttig om de website opnieuw te laden, zodat de HTTP Error 500 gereproduceerd wordt en je daarbij het logbestand in de gaten kunt houden. Zo kun je de bron van de fout snel achterhalen. Ga ook na welke wijzigingen je onlangs hebt doorgevoerd. Vaak veroorzaken verkeerd geprogrammeerde of niet-compatibele plug-ins foutmeldingen.

De HTTP Error 500 kan ook optreden als je de bevoegdheden bij belangrijke bestanden niet correct hebt ingesteld. Over het algemeen zijn er drie soorten rechten:

  • Lezen (r van read)
  • Schrijven (w van write)
  • Uitvoeren (x van execute)

Deze rechten kunnen ingesteld worden voor drie verschillende soorten gebruik:

  • Bezitter van de bestanden
  • Groep gebruikers
  • Alle anderen

De rechten worden aangegeven met de afkortingen r, w en x of met getallen: 4 voor lezen, 2 voor schrijven en 1 voor uitvoeren. Ze worden voor elke soort gebruik samengevoegd en achter elkaar weergegeven: rwxr-xr-x (rwx voor de bezitter, r-x voor de groep en r-x voor alle anderen) of 755. Deze configuratie (dus 755) moet de standaardinstelling zijn. Als de toewijzing van rechten anders is ingesteld, kunnen daardoor fouten ontstaan. Je kunt de rechten wijzigen met een commando:

chmod 755 bestandsnaam

Wanneer deze wijziging het probleem niet oplost, kun je als test ook alle rechten voor elke groep vrijgeven:

chmod 777 bestandsnaam

Gebruik deze instelling alleen om het probleem te lokaliseren. Je geeft hiermee immers elke willekeurige gebruiker toestemming om het bestand te herschrijven en dit brengt veiligheidsrisico’s met zich mee.

Controleer vervolgens (als de verdeling van rechten niet de oorzaak van de foutmelding was) of je scripts goed lopen. Soms ontstaan fouten doordat de scriptbestanden zijn verplaatst, een andere naam hebben gekregen of zijn gewist. Controleer ook het .htaccess-bestand: een syntaxisfout – hoe klein dan ook – kan al een Internal Server Error veroorzaken. Een eveneens regelmatig voorkomende fout is een verkeerde formattering van het .htaccess-bestand. Dat moet zijn opgesteld in het ASCII- of ANSI-formaat en niet in Unicode. Schrijf daarom de bestanden in een teksteditor, zoals Notepad, Notepad++ of Sublime Text, en niet in een tekstverwerkingsprogramma als Microsoft Word. Om te testen of het bestand de oorzaak is van de foutmelding, kun je het tijdelijk een andere naam geven en de website opnieuw laden. De server zal nu bij het laden van de website geen gebruikmaken van .htaccess. Als de foutmelding niet meer verschijnt, kun je het bestand repareren of een nieuw bestand maken.

Tenslotte kan ook een timeout de oorzaak zijn van de foutmelding. In dat geval gaat het helemaal niet om een fout van de webserver, maar meer om een onderbroken verbinding met een externe bron. Zijn de PHP-scripts van je website zo ingesteld dat ze gebruikmaken van bronnen van andere servers? Misschien is de bron niet meer beschikbaar of is de servercommunicatie om een andere reden verstoord. Wil je deze oorzaak uit kunnen sluiten, dan is het zaak om ervoor te zorgen dat je website niet meer afhankelijk is van externe bronnen. Wanneer dit niet mogelijk is, kun je de time limit van je script verhogen. Daarnaast is het zinvol om een efficiënte error handling in te bouwen, waarmee fouten in het PHP-script gemakkelijker kunnen worden gevonden.

Is het mogelijk dat het werkgeheugen overbelast is? Met de memory limit wordt vastgelegd hoeveel werkgeheugen een proces in beslag mag nemen. Als er meer RAM wordt gebruikt dan er beschikbaar is, kan dat leiden tot een Internal Server Error. Als tijdelijke oplossing kun je de limiet verhogen. Daarvoor voeg je een commando aan de php.ini toe volgens dit voorbeeld:

memory_limit = 512M

In dit voorbeeld stel je het beschikbare werkgeheugen in op 512 MB. Bedenk echter wel dat je hostingprovider je binnen je abonnement slechts een bepaalde PHP-script limit garandeert. Als je een hogere waarde invoert, zal de webserver deze negeren. Het verhogen van de limiet kan bovendien slechts een overgangsoplossing zijn: zodra je site weer werkt, moet je uitzoeken waarom hij zo veel RAM vereist. Zeer waarschijnlijk is de fout te vinden in de code van je website.

Wanneer geen van de voorgestelde methodes een oplossing biedt, is het een goed idee om contact op te nemen met je hostingprovider. Eerst kun je de status van de server controleren: veel hostingaanbieders informeren gebruikers over het functioneren van hun servers via een statuspagina of vermelden eventuele serverproblemen op social media.

Als de serverproblemen al bekend zijn, is het een kwestie van geduld: er zit niets anders op dan te wachten tot het IT-team van de host de fout heeft opgelost. Maar ook wanneer er geen problemen bekend zijn bij de servers kan het helpen om contact op te nemen met de klantenservice. Geef daarbij door wat je zelf al hebt geprobeerd. Zo kun je snel worden geholpen.


Wat te doen als je tijdens het surfen op een HTTP Error 500 stuit?

Als bezoeker van een website kun je in principe weinig doen als je te maken krijgt met een Internal Server Error. De webserver, waarop de website die je wilt bezoeken zich bevindt, geeft een foute configuratie aan. Dat houdt in dat zich geen fout voordoet in de instellingen van je pc of in je internetverbinding. Daarom is voor jou als internetgebruiker de eenvoudigste oplossing meestal om de website op een later tijdstip nogmaals te laden. Het kan zijn dat de webmaster de fout dan al heeft opgelost; dat is vooral bij grote aanbieders heel waarschijnlijk. Het kan ook zijn dat je de site toevallig wilde openen op een voor de webserver ongunstig moment. Als je de website precies opent waneer een dienst reboot, krijg je een foutmelding te zien, hoewel eigenlijk alles volgens plan verloopt.

Let op!

Als je tijdens het plaatsen van een online bestelling wordt geconfronteerd met een
foutmelding, kun je de website beter niet opnieuw laden. Je kunt immers niet zien waar de
fout zich heeft voorgedaan. Misschien is alleen het laden van de bevestigingspagina mislukt,
maar is je bestelling wel al door het systeem geregistreerd.
Een refresh zou in dat geval kunnen leiden tot een dubbele bestelling.

Het is eveneens mogelijk dat een plotselinge extreme verhoging van het aantal sitebezoekers de werking van de server verstoort. Ook dit probleem is vaak binnen enkele seconden weer opgelost – tenzij de website langdurig overbelast is. Als je ook na een refresh van de site de foutmelding nog te zien krijgt, is het aan te raden om eerst de cache van je browser te wissen. Misschien laadt de browser de website niet echt opnieuw, maar maakt hij gebruik van zijn interne geheugen. Probeer na het wissen van de cache opnieuw om de website te openen.

Als nu nog steeds ‘500 Internal Server Error’ verschijnt, zit er weinig anders op dan te wachten tot de beheerder van de website het probleem heeft opgelost. Met een kleine truc kun je eventueel toch nog bij de content van de website komen. Als je niet bent aangewezen op de meest actuele stand van de (functionerende) website, kun je gebruikmaken van de cache van Google. Wanneer je in de zoekbalk van Google het commando cache:, gevolgd door de desbetreffende URL invoert, kun je teruggaan naar een eerdere – hopelijk nog werkende – versie van de website. Je surft dan niet echt op de site, maar bekijkt een kopie die op de server van Google staat.

Moet je nog verder teruggaan, dan kan het nuttig zijn om een kijkje te nemen op de Wayback Machine van het Internet Archive. Daarin zijn soms versies van websites te vinden die tientallen jaren oud zijn.

HTTP Error 50
Via Google kun je kopieën van oudere versies van websites laden, bron: https://www.google.nl/

HTTP Error 50

Met een informatiebalk bovenaan de website maakt Google duidelijk tot welk moment de site in de cache is gekopieerd, bron: https://www.google.nl/

Als de website die je wilt bezoeken gedurende een langere periode niet kan worden opgeroepen, kun je natuurlijk ook contact opnemen met de webmaster. Het is diegene misschien helemaal nog niet opgevallen dat internetgebruikers niet meer op zijn of haar website kunnen komen, waardoor je melding zeer welkom is.

Interesseert dit onderwerp je? Neem ook eens een kijkje op onze pagine over het oplossen van de ERR-SSL-PROTOCOL-ERROR.