✦ Oplossingen · HTTP-foutcodes

500 Internal Server Error: algemene serverfout oplossen

Geeft je website 500 Internal Server Error of ‘HTTP ERROR 500’? Zo lees je het foutenlog, vind je de recente wijziging die het veroorzaakt en zet je de site veilig terug.

Zo ziet de foutmelding eruit

  • 500 Internal Server Error
  • HTTP ERROR 500
  • This page isn’t working
  • Deze pagina werkt niet
  • The server encountered an internal error or misconfiguration and was unable to complete your request.

Waarom gebeurt dit?

Een 500 Internal Server Error is de algemene melding dat er op de server iets misging bij het maken van de pagina. De server weet dat er een fout was, maar vertelt de bezoeker bewust niet welke: de details staan in de logbestanden. Daarom is de 500 zelf weinig zeggend, en is het foutenlog altijd de eerste stap.

De meest voorkomende oorzaken: een PHP-fout in code, een plugin of een thema (vaak direct na een update), een fout in .htaccess of de serverconfiguratie, onjuiste bestandsrechten, een volle schijf, een geheugenlimiet of een database die niet antwoordt en die de applicatie niet netjes afvangt. In de meeste gevallen is er kort tevoren iets veranderd.

Een 500 verschilt van de 502, 503 en 504: die gaan over de verbinding tussen webserver en achterliggende dienst, terwijl een 500 meestal uit de applicatie of de configuratie zelf komt. Een wit scherm zonder melding is vaak dezelfde fout, alleen zonder statuspagina.

Zo herken je dit probleem

  • De fout begon direct na een update, nieuwe plugin, codewijziging of aanpassing van .htaccess.
  • Alle pagina’s geven 500, of alleen één onderdeel zoals het beheer of de checkout.
  • Geeft de site 502, 503 of 504, kijk dan bij 502, 503 of 504-fout.
  • Zie je een leeg wit scherm, lees ook PHP white screen of death. Bij WordPress met de melding ‘kritieke fout’: kritieke fout op je website.

Zo los je het op, stap voor stap

Menunamen kunnen per versie of toestel iets anders heten. Loop de stappen op volgorde af en stop zodra het werkt.

  1. Bezoeker: herlaad later of meld het

    Herlaad de pagina na een minuut. Blijft de fout, dan kun je er als bezoeker niets aan doen: het probleem zit op de server. Meld het bij de eigenaar, met het adres en het tijdstip waarop je de fout zag.

  2. Bedenk wat er net veranderd is

    Een 500 heeft bijna altijd een aanleiding: een update van de applicatie, een nieuwe of bijgewerkte plugin, een gewijzigd configuratiebestand of een nieuwe PHP-versie. Weet je wat er veranderde, dan heb je je eerste verdachte. Bij een PHP-update: zie 500-fout na een PHP-update.

  3. Lees het foutenlog

    Open het foutenlog terwijl je de pagina herlaadt. Bij nginx met PHP-FPM staat de PHP-fout vaak in het nginx-log als FastCGI sent in stderr: "PHP message: PHP Fatal error: …", met bestand en regelnummer. Ook de applicatie heeft vaak een eigen log. Op gedeelde hosting vind je de logs in het hostingpaneel.

    sudo tail -f /var/log/nginx/error.log
    sudo tail -n 50 /var/log/apache2/error.log
    sudo journalctl -u php8.3-fpm --since '15 min ago'
  4. Draai de laatste wijziging terug

    Zet de laatst gewijzigde code of het laatste configuratiebestand terug naar de vorige werkende versie, of zet de nieuwe plugin uit door de map tijdelijk te hernoemen. Werkt de site daarna weer, dan weet je zeker waar het zit en kun je het in alle rust op een testomgeving uitzoeken.

  5. Controleer .htaccess en configuratie

    Een fout in .htaccess geeft op Apache direct een 500 voor de hele map. Hernoem het bestand tijdelijk om te testen; de uitleg staat op .htaccess-fout 500. Heb je de nginx- of Apache-configuratie aangepast, test die dan.

    sudo nginx -t
    sudo apachectl configtest
  6. Controleer schijfruimte, geheugen en rechten

    Een volle schijf geeft 500’s omdat sessies, cache en logs niet meer geschreven kunnen worden; zie No space left on device. Een te krappe geheugenlimiet zie je in het log als Allowed memory size exhausted. Controleer ook of de applicatie naar haar cache- en uploadmappen mag schrijven.

    df -h
    df -i
  7. Zet foutmeldingen tijdelijk zichtbaar op een testomgeving

    Staat er niets bruikbaars in het log, zet dan op een testomgeving of kopie van de site het loggen van fouten aan en het tonen ervan. Toon foutmeldingen nooit op de live site: ze laten paden en soms gegevens zien die aanvallers helpen.

    ; php.ini of .user.ini (testomgeving)
    display_errors = On
    log_errors = On
    error_reporting = E_ALL

Let op: Maak een back-up van bestanden en database voordat je gaat terugzetten of iets verwijdert. Een overhaaste reparatie op een live site kan meer kapotmaken dan de oorspronkelijke fout.

Waar vind je de juiste log?

Welke log je nodig hebt, hangt af van hoe de site draait:

  • nginx: meestal /var/log/nginx/error.log, of een eigen log per site uit de vhost-configuratie.
  • Apache: /var/log/apache2/error.log (Debian/Ubuntu) of /var/log/httpd/error_log (RHEL-familie).
  • PHP-FPM: het FPM-log of de systemd-journal van de FPM-dienst; het pad hangt af van de PHP-versie.
  • Applicatie: bijvoorbeeld storage/logs/laravel.log bij Laravel, of een debug-log van het CMS.

Wanneer schakel je hulp in?

  • De site blijft 500 geven nadat je de laatste wijziging hebt teruggedraaid.
  • Het foutenlog is leeg of je kunt het niet vinden.
  • Het gaat om een webshop of bedrijfssite die nu omzet of aanvragen misloopt.
  • Je hebt geen back-up en durft niets terug te zetten.

Lukt het niet? Wij helpen

Kom je er met deze stappen niet uit, of wil je het liever niet zelf doen? We kijken online mee of komen langs. Hulp op afstand kost €20 per uur; komen we langs, dan is de prijs op aanvraag. Je weet vooraf waar je aan toe bent.

Aanvraag

Hulp aanvragen

Schrijf kort wat er misgaat en wat je al hebt geprobeerd. Kies of we bellen, online meekijken of langskomen.

Veelgestelde vragen

Vragen over dit probleem

Wat betekent 500 Internal Server Error?

Er ging iets mis op de server bij het opbouwen van de pagina. De oorzaak staat niet op het scherm maar in het foutenlog van de server.

Ligt een 500-fout aan mijn computer?

Nee. Een 500 ontstaat op de server. Herladen of een andere browser verandert er niets aan, behalve als het om een kortstondige hapering ging.

Wat is het verschil tussen 500 en 502/503/504?

Een 500 komt meestal uit de applicatie of configuratie zelf. 502, 503 en 504 gaan over de verbinding tussen webserver en achterliggende dienst.

Kan een plugin een 500-fout veroorzaken?

Ja, een plugin of thema met een PHP-fout is een veelvoorkomende oorzaak, vaak na een update. Het foutenlog noemt dan het bestand van die plugin.