Waarom verschijnt er een “500 Internal Server Error” en hoe los ik het op?
Je ziet een “500 Internal Server Error” foutmelding op je website en je wilt deze graag opsporen en oplossen. Maar je weet niet goed waar je moet beginnen. Wij helpen je in deze blog om het probleem te vinden en op te lossen.
Wat betekent de melding “500 Internal Server Error”?
Waarschijnlijk heb je deze melding net gezien en denk je: “500 Internal Server Error, wat is dat nou weer?” Met een beetje zoeken zul je al snel ontdekken dat de “500 Internal Server Error” melding een vrij algemene foutmelding is die aangeeft dat er een probleem is opgetreden aan de serverzijde van de website die je probeert te bezoeken. Dit betekent dat de server onverwacht een taak niet kan uitvoeren.
Waar kan een “500 Internal Server Error” door worden veroorzaakt?
Een 500 Internal Server Error kan door veel verschillende fouten worden veroorzaakt. Het is een vrij algemene foutmelding die niet veel duidelijkheid biedt over de oorzaak van het probleem. De meest voorkomende oorzaken zijn:
- Scriptfouten
Een fout in het script van de website, zoals een fout in de syntax, is een verkeerde (niet-bestaande) functie of het aanroepen van iets dat helemaal niet bestaat. Wanneer je aan je website werkt en bijvoorbeeld de HTML, CSS of JavaScript aanpast, is het belangrijk om te controleren of wat je geschreven hebt ook klopt. Een simpele fout zoals een extra ‘<’ of een ‘=’ waar deze niet hoort, kan al voor problemen zorgen. - Configuratieproblemen
Er kunnen problemen zijn met de configuratie van de server, zoals het gebruik van een verkeerde PHP-versie of verkeerde autorisatiegegevens en rechten. - Rechten en Permissies
Verkeerde bestand- of mappermissies waardoor de server geen toegang heeft tot benodigde bestanden. Dit kan komen door verschillende toegangsproblemen: geen leesrechten, geen schrijfrechten, geen uitvoeringsrechten, verkeerde gebruikersrechten (bijvoorbeeld de verkeerde gebruikersgegevens gekoppeld aan het account waarmee de server handelingen moet uitvoeren), geen toegang tot de configuratiebestanden, wijzigingen aan de permissies door een update/deployment of te losse permissies (dit kan leiden tot exploits en aanvallen die bestanden corrupt maken). - Databaseproblemen
Bij een database kunnen vooral de instellingen problemen veroorzaken. Verkeerde inloggegevens, onvoldoende limieten en pakketgroottes kunnen ervoor zorgen dat de database niet de juiste verbinding kan maken of onvoldoende ruimte heeft om zijn taken uit te voeren. - Incompatibele Plugins of Extensies
Soms zijn plugins of extensies niet meer compatibel met je website. Dit kan komen doordat de plugin verouderd is, je website verouderd is of de plugin gewoonweg niet meer ondersteund wordt. Het is daarom belangrijk om zowel je website als plugins en extensies regelmatig te updaten. Soms worden plugins en extensies niet meer ondersteund omdat er een nieuwe versie beschikbaar is of omdat de oude versie een exploit bevat waardoor er een kwetsbaarheid is ontstaan. Soms kan het ook zijn dat plugins en/of extensies onderling niet meer compatibel zijn. - Timeouts
Wanneer een verzoek te lang duurt om uitgevoerd te worden, krijg je een timeout en geeft de server een foutmelding.
Hoe los je de “500 Internal Server Error” op?
De oorzaak van een “500 Internal Server Error” is vaak moeilijk te vinden. Niet alleen kunnen er veel verschillende redenen zijn waarom je de foutmelding ziet, maar er kunnen ook meerdere oorzaken tegelijkertijd zijn. Het is daarom belangrijk dat je goed onderzoekt waar de foutmelding precies vandaan komt.
Stap 1. Is dit een lokaal probleem?
De “500 Internal Server Error” kan ook door een lokaal probleem worden veroorzaakt. Om zeker te weten dat het geen lokaal probleem is, moet je een aantal zaken eerst proberen:
- De pagina nog een keer herladen
- Je browsercache en cookies legen
- De website via een incognitovenster bezoeken
- De website via een ander netwerk bezoeken
- Je bestand- en mappermissies resetten
- De PHP-versie veranderen
Als dit alles niet helpt, kun je vrijwel zeker zijn dat het geen lokaal probleem is en verdergaan met de volgende stap.
Stap 2. Oorzaak achterhalen
Allereerst kun je kijken naar de serverlogs. Bij de meeste servers kun je een log bekijken waarin alle fouten worden geregistreerd. Wij maken gebruik van cPanel, waar je onder ‘Fouten’ een overzicht kunt vinden van de meest recente error log-berichten. Je krijgt hier de laatste 300 foutmeldingen te zien, inclusief details over het bestand dat de fout veroorzaakte, de tijd waarop het plaatsvond en de foutmelding zelf. In het ‘error_log-bestand’ kun je oudere foutmeldingen vinden, die je in het bestandsbeheer kunt terugvinden.
Als je de fout in deze logs niet kunt vinden, kun je proberen om het via de MultiPHP INI Editor te doen. Selecteer het domein dat de problemen heeft, zorg ervoor dat ‘log_errors’ is ingeschakeld en stel een pad in naar het ‘error_log-bestand’. Alle PHP-fouten (die niet zichtbaar zijn in de cPanel-foutmeldingen) zullen in dit bestand worden geregistreerd. Zodra je de oorzaak van de foutmelding hebt gevonden, kun je kijken hoe deze moet worden opgelost!
Stap 3. Je hebt de error gevonden, en nu?
Voordat je aan de slag gaat met de website, maak je altijd een back-up. Mocht er iets misgaan, dan heb je altijd een back-up om op terug te vallen. Nu je weet wat de error is en waar deze vandaan komt, kun je op zoek naar een oplossing. De oplossing kan heel eenvoudig zijn of meer werk vereisen, afhankelijk van wat je in de logs hebt gevonden:
- Fout in de configuratie van de webserver: Als je bijvoorbeeld gebruik maakt van een module die niet herkend wordt, kan er iets staan als: “Invalid command ‘RewriteEngine’ , perhaps misspelled or defined by a module not included in the server configuration”. Dit kan betekenen dat de module verkeerd is geschreven of uitstaat en moet worden ingeschakeld om de foutmelding op te lossen.
- Server heeft geen toegang tot bestanden of mappen: Als er staat: “Permission denied: access to /index.html-denied”, betekent dit dat de server geen toegang heeft om “index html” te lezen. Je moet de bestandsrechten aanpassen zodat de server toegang krijgt. In cPanel kun je inloggen, naar ‘File-Manager’ gaan, de ‘public html-map’ vinden, en via de ‘permissions knop’ bovenaan de juiste permissies instellen. Voor bestanden moet de server de permissies ‘644’ hebben (lezen), en voor mappen ‘755’ (lezen, schrijven en uitvoeren). Als de permissies goed zijn ingesteld, sla je de wijzigingen op en controleer je of alles weer werkt.
- Te weinig geheugen: Als je een foutmelding ziet zoals: “Out of memory: Kill process 1234 (httpd) score 99 or sacrifice child”, betekent dit dat er niet genoeg geheugen beschikbaar was om de taak uit te voeren. Je kunt proberen om het geheugen en de tijdslimieten tijdelijk te verhogen om te zien of dit helpt. Na het uitvoeren van de taak kun je de limieten weer terugzetten. Als je website veel geheugen nodig heeft, kan het verstandig zijn om het verhoogde geheugen te behouden.
- Timeouts: Als je in het log ziet staan: “upstream timed out (110: Connection timed out) while reading response header from upstream”, probeert de server gegevens op te halen, maar de verbinding loopt vast of kan niet op tijd beantwoorden. Verhoog de timeout-limieten en kijk of de taak nu kan worden uitgevoerd. Zorg ervoor dat de API die wordt gebruikt goed is geoptimaliseerd. Als er herhaaldelijk problemen zijn met de API, neem dan contact op met de leverancier van de API.
Een Limiet zoals max execution time moet niet permanent worden verhoogd. Het is ingesteld om beveiliging, prestaties en stabiliteit van de website te waarborgen en om misbruik zoals DoS-aanvallen te voorkomen. - Ongeldige configuratie-opties in “htaccess”: Als je een foutmelding ziet zoals “Invalid command ‘Options’, perhaps misspelled or defined by a module not included in the server configuration”, controleer dan of de configuratie-optie correct is geschreven en of de vereiste module is ingeschakeld.
- Overbelasting door te veel verzoeken: Als je ziet: “server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting”, betekent dit dat de server te veel verzoeken ontvangt en zijn limiet van gelijktijdige verbindingen heeft bereikt. Verhoog de limiet als je de server in eigen beheer hebt, of neem contact op met je hostingprovider als je website extern wordt gehost.
Natuurlijk kan het ook zijn dat je PHP-versie, plugins en/of je WordPress-thema verouderd zijn en een update nodig hebben. Het is altijd verstandig om deze updates regelmatig uit te voeren om een foutmelding zoals de 500 Internal Server Error te voorkomen. Als er meerdere updates nodig zijn, voer deze dan stuk voor stuk uit, te beginnen met de PHP-versie, gevolgd door plugins en vervolgens WordPress/thema.
Hoe voorkom ik in de toekomst de “500 Internal Server Error” melding?
Een “500 Internal Server Error” voorkom je vooral door regelmatig updates uit te voeren, niet te vaak instellingen te wijzigen en altijd zorgvuldig te werk te gaan bij het werken aan je website. Aangezien er zoveel oorzaken voor deze melding zijn, is het lastig om deze volledig te voorkomen. Bovendien kunnen fouten zich voordoen tijdens het werken aan je website. Het is daarom vooral belangrijk dat je weet hoe je deze oplost of waar je om hulp kunt vragen wanneer je de 500 Internal Server Error melding tegenkomt. Bij ons kun je altijd terecht met vragen over deze melding of voor hulp bij het oplossen ervan.
Meer informatie over website-optimalisatie
Vond je dit artikel interessant en wil je graag meer weten over de optimalisatie van je website? Of heb je een andere foutmelding die je graag zou willen oplossen? Lees snel verder bij onze andere artikelen over website-optimalisatie en het oplossen van foutmeldingen!