HTTP

500 Internal Server Error: Ursachen und Lösungen

Der HTTP-Fehler 500 ist ein serverseitiger Fehler. Dieser Leitfaden erklärt, was ihn verursacht und wie man ihn systematisch behebt.

Lesezeit 7 Min. Aktualisiert 28.05.2026 2 Quellen Jan-Tristan Rudat Jan-Tristan Rudat
Inhalt

Was steckt hinter dem 500-Fehler?

Der HTTP-Statuscode 500 Internal Server Error ist der generische Fehlercode für alle Probleme, die serverseitig auftreten und für die kein spezifischerer 5xx-Code vorgesehen ist. Anders als ein 404 liegt das Problem nicht bei der Anfrage des Nutzers, sondern beim Server selbst: Er hat die Anfrage empfangen, konnte sie aber nicht verarbeiten, weil intern etwas schiefgelaufen ist.

Das macht 500-Fehler aus Betreiberperspektive zu den kritischsten überhaupt. Während ein 404 bedeutet, dass eine Seite fehlt, bedeutet ein 500, dass der Server in einem Fehlerzustand ist. Je nach Ursache kann das eine einzelne Seite betreffen oder die gesamte Website lahmlegen.

Häufige Ursachen für einen 500-Fehler

Fehler im Anwendungscode sind die häufigste Ursache. Ein nicht abgefangener Programmfehler in PHP, Python, Node.js oder einer anderen serverseitigen Sprache führt dazu, dass der Server keine Antwort generieren kann. Stattdessen gibt er einen 500 zurück. Das passiert besonders häufig nach Code-Deployments, bei denen ein Fehler eingeführt wurde.

Falsche Dateiberechtigungen sind ein klassisches Problem auf Linux-Servern. Wenn der Webserver-Prozess keine Leseberechtigung für bestimmte Dateien hat, scheitert er beim Versuch, diese auszuliefern, und liefert einen 500. Das betrifft häufig Konfigurationsdateien oder statische Assets.

Fehlerhafte .htaccess-Datei: Auf Apache-Webservern steuert die .htaccess-Datei viele Einstellungen. Ein Syntaxfehler darin führt sofort zu einem 500, weil Apache die Konfiguration nicht parsen kann. Das ist eine häufige Falle bei der manuellen Bearbeitung dieser Datei.

Datenbankverbindungsfehler: Wenn eine Webanwendung keine Verbindung zur Datenbank herstellen kann, sei es wegen falscher Zugangsdaten, weil der Datenbankserver abgestürzt ist oder weil alle Verbindungen belegt sind, resultiert das oft in einem 500. Der Anwendungscode kann ohne Datenbankverbindung nicht funktionieren.

Speicher- oder Zeitüberschreitungen: PHP und andere serverseitige Sprachen haben konfigurierbare Grenzen für Speicherbedarf (memory_limit) und Ausführungszeit (max_execution_time). Skripte, die diese Grenzen überschreiten, werden vom Server abgebrochen, was in einem 500 resultiert.

Fehlende oder beschädigte Abhängigkeiten: Moderne Webanwendungen nutzen viele externe Bibliotheken. Fehlt eine oder ist sie beschädigt, kann die Anwendung beim Start oder beim Verarbeiten einer Anfrage abstürzen.

Wie man einen 500-Fehler debuggt

Das erste Werkzeug bei der Ursachensuche sind die Server-Logs. In den Error-Logs des Webservers und der Anwendung findet sich meistens eine konkrete Fehlermeldung, die auf die Ursache hinweist. Bei Apache liegen diese Logs standardmäßig unter /var/log/apache2/error.log, bei nginx unter /var/log/nginx/error.log.

Auf geteiltem Hosting (Shared Hosting) ist der Zugriff auf Server-Logs oft eingeschränkt. Viele Hostsysteme bieten aber ein Error-Log im Control Panel an, zum Beispiel in cPanel unter dem Punkt “Error Logs”.

Für PHP-Anwendungen ist es außerdem hilfreich, PHP-Fehlerausgaben im Error-Log zu aktivieren:

log_errors = On
error_log = /var/log/php_errors.log
display_errors = Off

display_errors sollte auf Off stehen, damit Fehlermeldungen nicht dem Nutzer angezeigt werden, aber in die Logs geschrieben werden.

Systematische Fehlersuche nach einem Deployment

Tritt ein 500 unmittelbar nach einem Deployment auf, ist die Vorgehensweise klar: Man sucht nach dem Unterschied zwischen dem vorherigen funktionierenden Zustand und dem aktuellen.

  1. Welche Dateien wurden geändert?
  2. Hat sich die Konfiguration verändert?
  3. Wurden neue Abhängigkeiten hinzugefügt?
  4. Hat sich die PHP- oder Node.js-Version geändert?

Wenn möglich, ist ein Rollback auf die letzte bekannte gute Version der schnellste Weg, den Betrieb wiederherzustellen. Anschließend kann man in einer Testumgebung nach der Ursache suchen.

500-Fehler überwachen

Ein 500-Fehler ist besonders tückisch, weil er nicht immer sofort bemerkt wird. Betrifft er nur eine einzelne Unterseite, merken Nutzer es vielleicht erst nach Stunden. Betrifft er die Startseite oder den Checkout-Prozess eines Online-Shops, ist der wirtschaftliche Schaden pro Minute messbar.

Monitoring-Tools können hier früh warnen. Das Tool auf website-status-checker.de zeigt sofort an, wenn eine überwachte URL einen 500 statt dem erwarteten 200 zurückliefert. So lässt sich die Reaktionszeit deutlich verkürzen.

Für produktive Systeme empfiehlt sich außerdem eine separate Alarmierung für 5xx-Fehlerraten in den Server-Logs. Tools wie fail2ban oder einfache cron-Skripte können regelmäßig die Error-Logs prüfen und bei Häufung von 500-Fehlern eine Benachrichtigung auslösen.

Weitere 5xx-Codes im Überblick

Neben dem generischen 500 gibt es spezifischere Codes, die präzisere Diagnosen erlauben:

  • 501 Not Implemented: Der Server unterstützt die angeforderte Methode nicht.
  • 502 Bad Gateway: Ein vorgelagerter Proxy hat keine gültige Antwort vom Ursprungsserver erhalten.
  • 503 Service Unavailable: Der Server ist vorübergehend nicht verfügbar, meist durch Überlastung oder Wartung.
  • 504 Gateway Timeout: Der Proxy hat zu lange auf die Antwort gewartet.
  • 507 Insufficient Storage: Dem Server fehlt Speicherplatz für die Operation.

Wenn ein spezifischer 5xx-Code auftritt, ist die Ursache damit schon eingegrenzt. Ein 502 bedeutet fast immer ein Problem mit dem Reverse Proxy oder Load Balancer, nicht mit dem Anwendungscode selbst. Ein 504 deutet auf sehr langsame Datenbankabfragen oder externe API-Aufrufe hin, die zu lange dauern.

Was man als Nutzer tun kann

Als Besucher einer Website, die einen 500 liefert, hat man kaum Möglichkeiten zur Behebung. Das Problem liegt vollständig beim Betreiber. Sinnvolle Schritte sind:

  • Die Seite nach einer kurzen Wartezeit neu laden
  • Die URL direkt eingeben, falls man über einen Link dorthin kam
  • Den Betreiber kontaktieren, wenn die Website für einen wichtigen Zweck benötigt wird

Ob das Problem nur einen selbst betrifft oder alle Nutzer der Website, lässt sich mit einem externen Prüfdienst herausfinden.

Häufige Fragen

Was ist der Unterschied zwischen einem 500- und einem 503-Fehler?

Ein 500 Internal Server Error bedeutet, dass etwas im Server-Code oder in der Konfiguration fehlgeschlagen ist. Ein 503 Service Unavailable bedeutet, der Server ist zwar in Ordnung, aber gerade überlastet oder in Wartung. Der 503 ist meist temporär, ein 500 deutet auf einen konkreten Defekt hin.

Wie kann ich als normaler Nutzer einen 500-Fehler beheben?

Als Nutzer kann man einen 500-Fehler meist nicht selbst beheben, da er serverseitig verursacht wird. Das Einzige, was man tun kann: Seite neu laden, etwas warten und es erneut versuchen, oder den Website-Betreiber informieren.

Was bedeutet 502 Bad Gateway im Vergleich zu 500?

Ein 502 tritt auf, wenn ein vorgelagerter Proxy oder Load Balancer keine gültige Antwort vom Ursprungsserver bekommt. Das kann an einem abgestürzten Anwendungsserver liegen, ähnlich wie bei einem 500, aber die Fehlermeldung kommt vom Proxy, nicht vom Server selbst.

Quellen

  • RFC 9110: HTTP Semantics, Section 15.6 (Server Error 5xx)
  • nginx Dokumentation: Fehlerbehandlung und Logging
Jan-Tristan Rudat

Über die Autorenschaft

Jan-Tristan Rudat

Redakteur website-status-checker.de

Themengebiet: Generationen, Kulturgeschichte, Sternzeichen, Pop-Phänomene rund ums Alter

Mehr über Jan-Tristan Rudat →

Verwandte Artikel

Website Status Checker nutzen

Sofort im Browser, ohne Anmeldung.

Zum Tool