Ein 500 Internal Server Error bedeutet: Der Server hat Ihre Anfrage bekommen, ist bei der Bearbeitung aber auf ein Problem gestoßen, das er nicht genauer benennt. Die Meldung selbst verrät also nichts über die Ursache. Die gute Nachricht ist, dass es fast immer eine von fünf Ursachen ist, und der Server schreibt den genauen Grund in sein Fehlerprotokoll. Wer weiß, wo dieses Protokoll liegt, hat den Fehler in den meisten Fällen in zehn Minuten gefunden.
Das Wichtigste in Kürze
- Der Fehler 500 heißt nur: Auf dem Server ist etwas schiefgelaufen. Die Ursache steht im Fehlerprotokoll.
- Fast immer ist es die htaccess, ein Plugin oder Theme, die PHP-Version, eine Speichergrenze oder falsche Dateirechte.
- Nehmen Sie zuerst die letzte Änderung zurück, das löst die meisten Fälle.
- Ein Uptime-Check meldet den nächsten Ausfall, bevor Kunden anrufen.
Was ein 500 Internal Server Error bedeutet
Webserver antworten mit dreistelligen Statuscodes. Alles mit einer 5 vorne heißt: Das Problem liegt auf dem Server, nicht beim Besucher. Der Code 500 ist die allgemeinste Variante. Der Webserver verwendet ihn, wenn etwas schiefgeht, für das es keinen genaueren Code gibt, etwa wenn ein PHP-Skript abstürzt oder eine Konfigurationsdatei einen Fehler enthält.
Je nach Server und CMS sieht die Meldung unterschiedlich aus. Mal steht dort nur „Internal Server Error“, mal eine leere weiße Seite, bei WordPress oft „Es gab einen kritischen Fehler auf dieser Website“. Hinter allen drei steckt meist derselbe Statuscode, also ein 500 Internal Server Error. Eine allgemeine Erklärung der Codes finden Sie in der Referenz von MDN.
Erste Fragen: seit wann und wo?
Bevor Sie beim 500 Internal Server Error etwas ändern, klären Sie drei Dinge. Die Antworten grenzen die Ursache schon stark ein.
- Was hat sich zuletzt geändert? Ein Plugin-Update, eine neue Regel in der htaccess, eine andere PHP-Version, ein Umzug? In vier von fünf Fällen liegt die Ursache in der letzten Änderung.
- Betrifft es alle Seiten oder nur eine? Fallen alle Seiten aus, liegt es meist an der htaccess, an der PHP-Version oder am Server. Ist nur eine Seite oder nur der Adminbereich betroffen, eher an einem Plugin oder einem einzelnen Skript.
- Kommt der Fehler immer oder nur manchmal? Ein Fehler, der nur zeitweise auftritt, deutet auf Speichergrenzen oder Last hin.
Das Fehlerprotokoll lesen
Der wichtigste Schritt bei jedem 500 Internal Server Error ist ein Blick ins Fehlerprotokoll. Bei Webhosting finden Sie es im Kundenmenü, oft unter „Logs“, „Protokolle“ oder „Fehlerprotokoll“, manchmal auch als Datei error.log in einem Ordner logs neben dem Webordner. Auf einem eigenen Server mit Apache liegt es meist unter /var/log/apache2/error.log, bei Nginx mit PHP-FPM zusätzlich im Protokoll von PHP-FPM. PHP-FPM ist der Dienst, der auf vielen Servern die PHP-Skripte getrennt vom Webserver ausführt.
Schauen Sie auf die Einträge mit der Uhrzeit, zu der Sie die Seite aufgerufen haben. Typische Zeilen sehen so aus:
.htaccess: Invalid command 'php_value', perhaps misspelled
PHP Fatal error: Allowed memory size of 134217728 bytes exhausted
PHP Fatal error: Uncaught Error: Call to undefined function
in /home/kunde/htdocs/wp-content/plugins/beispiel/beispiel.php:42
Die erste Zeile zeigt einen Fehler in der htaccess, die zweite ein Speicherproblem, die dritte einen Programmfehler in einem bestimmten Plugin, sogar mit Datei und Zeile. Damit wissen Sie, wo Sie ansetzen.
Ursache 1: Fehler in der htaccess
Ein Tippfehler oder ein Befehl, den der Server nicht kennt, und schon liefert jede Seite einen 500 Internal Server Error. Besonders häufig sind PHP-Einstellungen wie php_value, die nur funktionieren, wenn PHP als Apache-Modul läuft. Bei den meisten Hostern ist das nicht der Fall.
Zum Test benennen Sie die Datei kurz um, etwa in htaccess.aus. Lädt die Seite dann wieder, wenn auch vielleicht ohne schöne Adressen, liegt es an der Datei. Fügen Sie die Blöcke einzeln wieder ein, bis Sie die fehlerhafte Zeile gefunden haben. Wie die Datei aufgebaut ist und welche Regeln sicher funktionieren, erklärt der Ratgeber zur htaccess-Datei.
Ursache 2: PHP-Fehler nach Update oder Versionswechsel
Ein Plugin, ein Theme oder eine Erweiterung ruft eine Funktion auf, die es in der aktuellen PHP-Version nicht mehr gibt, oder ein Update ist nur halb durchgelaufen. Das Fehlerprotokoll nennt dann die Datei. Liegt sie im Ordner eines Plugins, schalten Sie dieses Plugin ab.
Kommen Sie nicht mehr in den Adminbereich, geht das über SFTP oder den Dateimanager: Benennen Sie den Ordner des Plugins in wp-content/plugins/ um, zum Beispiel in beispiel.aus. WordPress schaltet es dann ab. Wissen Sie nicht, welches Plugin schuld ist, benennen Sie den ganzen Ordner plugins um und aktivieren Sie die Plugins danach einzeln wieder. Beim Theme gehen Sie genauso vor, WordPress fällt dann auf ein Standard-Theme zurück.
Haben Sie gerade die PHP-Version umgestellt, stellen Sie sie im Kundenmenü testweise zurück. Läuft die Seite wieder, aktualisieren Sie zuerst Plugins und Theme und wechseln danach erneut. Wie das geht, zeigt der Ratgeber PHP-Version ändern.
Ursache 3: Speicher oder Laufzeit reichen nicht
Steht im Protokoll „Allowed memory size exhausted“, braucht ein Skript mehr Arbeitsspeicher als erlaubt. Die Grenze heißt memory_limit und lässt sich bei den meisten Tarifen im Kundenmenü erhöhen, für WordPress sind 256 MB ein üblicher Wert. Reicht das nicht, verbraucht vermutlich ein einzelnes Plugin zu viel, etwa beim Import oder bei der Erzeugung von Vorschaubildern.
Ähnlich ist es mit der Laufzeit. Bricht ein Skript nach 30 oder 60 Sekunden ab, sehen Sie je nach Server einen Fehler 500 oder 504. Lange Aufgaben wie Importe oder Backups laufen besser als Cronjob im Hintergrund als über den Browser. Tritt das Problem nur zu Stoßzeiten auf, stößt der Tarif an seine Grenzen. Dann lohnt sich ein Blick auf die Zahl der PHP-Prozesse und auf ein Caching, das viele Aufrufe ohne PHP beantwortet.
Ursache 4: Falsche Dateirechte
Auf vielen Webservern laufen PHP-Skripte mit den Rechten Ihres Benutzers. Aus Sicherheitsgründen verweigert der Server die Ausführung, wenn eine Datei oder ein Ordner für alle beschreibbar ist, also die Rechte 777 hat. Das Ergebnis ist ein 500 Internal Server Error. Üblich sind 644 für Dateien und 755 für Ordner. Bei Konfigurationsdateien mit Passwörtern, etwa der wp-config.php, sind 640 oder 600 noch besser.
Dateirechte setzen Sie im FTP-Programm über einen Rechtsklick und „Dateiberechtigungen“. Mit SSH geht es für einen ganzen Ordner auf einmal:
find /home/kunde/htdocs -type d -exec chmod 755 {} \;
find /home/kunde/htdocs -type f -exec chmod 644 {} \;
Nach einem Umzug stimmt auf eigenen Servern manchmal auch der Besitzer der Dateien nicht. Dann hilft ein chown auf den Benutzer, unter dem PHP läuft.
Ursache 5: Beschädigte Dateien oder ein Angriff
Ist ein Update abgebrochen, fehlen Dateien oder sind nur halb geschrieben. Bei WordPress laden Sie dann dieselbe Version neu hoch, ohne den Ordner wp-content und die wp-config.php anzufassen. Finden Sie im Protokoll Hinweise auf Dateien, die Sie nicht kennen, oder auf merkwürdigen Code, kann auch Schadsoftware dahinterstecken. Dann gehen Sie vor wie im Ratgeber Website gehackt beschrieben.
Fehlermeldungen in WordPress sichtbar machen
Bietet Ihr Hoster kein Fehlerprotokoll an, kann WordPress selbst eines schreiben. Ergänzen Sie in der wp-config.php über der Zeile „Das war's, Schluss mit dem Bearbeiten!“ diese drei Zeilen:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
Die Fehler landen dann in wp-content/debug.log und nicht auf dem Bildschirm Ihrer Besucher. Schalten Sie das nach der Fehlersuche wieder ab und löschen Sie die Datei, denn sie kann Pfade und andere interne Angaben enthalten. Seit Version 5.2 schickt WordPress bei vielen schweren Fehlern außerdem eine Mail an die Admin-Adresse mit einem Link in den Wiederherstellungsmodus. Darin können Sie das schuldige Plugin direkt abschalten.
Abgrenzung: 500, 502, 503 und 504
Nicht jeder Serverfehler ist ein 500 Internal Server Error. Die Nachbarn haben eigene Bedeutungen und führen zu anderen Ursachen:
- 502 Bad Gateway: Ein vorgeschalteter Server, etwa ein Proxy oder CDN, bekommt vom eigentlichen Server keine gültige Antwort. Häufig ist PHP-FPM abgestürzt oder überlastet.
- 503 Service Unavailable: Der Server ist vorübergehend nicht verfügbar, meist wegen Wartung oder Überlast. Diesen Code sollte auch Ihre eigene Wartungsseite senden.
- 504 Gateway Timeout: Die Antwort kam zu spät. Ein Skript oder eine Datenbankabfrage braucht zu lange.
Folgen für Besucher und Suchmaschinen
Ein kurzer Ausfall von ein paar Minuten schadet dem Ranking nicht. Sieht eine Suchmaschine über Tage einen 500 Internal Server Error, ruft sie die Seiten seltener ab und nimmt sie irgendwann aus dem Index. Je schneller Sie den Fehler bemerken, desto besser. Ein externer Uptime-Check meldet einen Ausfall innerhalb von Minuten per Mail oder Push-Nachricht. Wie Sie ihn einrichten, zeigt der Ratgeber zum Website-Monitoring.
Wenn ein Onlineshop betroffen ist
Bei einem Shop kostet jede Minute Umsatz, und halb abgeschlossene Bestellungen können Ärger machen. Gehen Sie deshalb etwas anders vor als bei einer Firmenseite:
- Wartungsseite mit 503: Kommen Sie nicht in wenigen Minuten weiter, schalten Sie eine Wartungsseite ein, die den Code 503 sendet. Kunden sehen dann einen freundlichen Hinweis statt einer Fehlermeldung, und Suchmaschinen wissen, dass es vorübergehend ist.
- Bestellungen prüfen: Schauen Sie nach der Behebung, ob in der Zeit des Ausfalls Zahlungen eingegangen sind, zu denen keine Bestellung im Shop existiert. Zahlungsanbieter melden das oft über einen Rückruf an den Shop, der während des Fehlers ins Leere lief.
- Kein Zurückspielen eines alten Backups ohne Plan, sonst gehen Bestellungen der letzten Stunden verloren. Nehmen Sie lieber gezielt die Änderung zurück, die den Fehler ausgelöst hat.
- Updates nie während der Hauptzeit: Spielen Sie Updates in einer Testumgebung ein und übernehmen Sie sie in ruhigen Stunden.
Weitere Anforderungen an den Betrieb eines Shops beschreibt der Ratgeber zum Onlineshop-Hosting.
Wenn Sie nicht weiterkommen
Finden Sie die Ursache nicht, schreiben Sie dem Support Ihres Hosters. Nennen Sie die betroffene Adresse, die Uhrzeit, was Sie zuletzt geändert haben und die Zeilen aus dem Fehlerprotokoll. Mit diesen Angaben bekommen Sie deutlich schneller eine brauchbare Antwort.
Häufig gestellte Fragen
Liegt ein 500 Internal Server Error an meinem Browser?
Nein. Der Fehler entsteht auf dem Server. Cache leeren oder einen anderen Browser nehmen hilft nur, wenn der Fehler schon behoben ist und Sie noch eine alte Fehlerseite sehen.
Warum sehe ich nur eine weiße Seite?
Viele Server zeigen PHP-Fehler aus Sicherheitsgründen nicht an. Die weiße Seite ist dann ein Fehler 500 ohne Text. Die Ursache steht im Fehlerprotokoll.
Kann ich den Fehler 500 ohne FTP beheben?
Oft ja. Im Dateimanager des Kundenmenüs können Sie die htaccess umbenennen und Plugin-Ordner deaktivieren. Die PHP-Version stellen Sie ebenfalls dort um.
Ist mein Hoster schuld?
Manchmal, bei Wartung oder Störungen. Meist liegt die Ursache aber in der eigenen Installation. Prüfen Sie zuerst die Statusseite Ihres Anbieters, dann das Fehlerprotokoll.
Wie verhindere ich den Fehler in Zukunft?
Updates zuerst auf einer Testumgebung einspielen, vor Änderungen an der htaccess eine Kopie anlegen, regelmäßig Backups machen und einen Uptime-Check einrichten.
500 Internal Server Error schnell beheben
Lesen Sie zuerst das Fehlerprotokoll, nehmen Sie dann die letzte Änderung zurück und prüfen Sie htaccess, Plugins, PHP-Version und Dateirechte in dieser Reihenfolge. Testen Sie Updates künftig vorher in einer Kopie Ihrer Seite.
Richten Sie jetzt eine Staging-Umgebung für sichere Updates ein.