NeuBlack Friday – 50 % Rabatt auf die erste Zahlung
WordPress-Fehlerbehebung

500 Interner Serverfehler

Der Webserver versuchte, die Seite zu produzieren, etwas ging schief innerhalb, und es gab einen Statuscode statt eines Grundes.

500 Internal Server Error

Kurzantwort

Der Grund liegt im Fehlerprotokoll des Servers, nicht auf der Seite. Lesen Sie die letzten Zeilen davon, bevor Sie etwas ändern - eine 500, die durch einen fehlerhaften .htaccess verursacht wird, und eine 500, die durch einen fatalen PHP-Notfall verursacht wird.

Diagnose

Die wahrscheinlichsten Ursachen zuerst.

Gehen Sie die Liste der Reihe nach durch. Prüfen Sie jede Ursache, bevor Sie etwas ändern, da die Lösungen unterschiedlich sind und eine Vermutung mehr Zeit kostet als ein Befehl.

UrsacheSo prüfen Sie esLösung
Ein fehlgeformter .htaccessWenn die 500 eine Arbeitsseite oder eine 404 wird, war .htaccess die Ursache.Lassen Sie WordPress ein sauberes schreiben, indem Sie Permalinks erneut speichern. Eine Direktive von einem Plugin, das der Server nicht unterstützt, ist der übliche Grund.
Ein PHP fataler Fehler, den der Handler nicht melden konnteDas PHP-Fehlerprotokoll hat einen "Fatal Error"-Eintrag, der auf Ihre Anfrage getaktet ist, während das Access-Log die 500 aufzeichnet.Behandeln Sie es als fatal: Finden Sie die benannte Datei, deaktivieren Sie das Plugin oder Theme, das sie besitzt.
Falsche DateiberechtigungenVerzeichnisse, die nicht 755 sind, oder Dateien, die nicht 644 sind, oder alles, was in Gruppen oder Welten geschrieben werden kann und was der Handler nicht ausführen möchte.Zurücksetzen. Eine Wiederherstellung von einem Backup, das keine Modi erhalten hat, ist die übliche Ursache dafür, dass ein ganzer Baum auf einmal falsch ist.
Eine PHP-Erweiterung fehlt nach einer VersionsänderungDas Fehlerprotokoll benennt eine undefinierte Funktion und nicht ein Syntaxproblem - ein Aufruf zu etwas, das der neue PHP-Build nicht bietet.Installieren Sie die Erweiterung oder gehen Sie zurück zur PHP-Version, die sie hatte.
Dem Server ging eine Ressource aus, die er nicht benenntDer 500 ist intermittierend unter Last und fehlt, wenn die Website ruhig ist.Schauen Sie sich Prozessgrenzen und Speicher an, bevor Sie WordPress berühren. Ein intermittierender 500 ist eine Kapazitätsgeschichte, keine Codegeschichte.
Anleitung

Schritt für Schritt zur Lösung.

Die Befehle setzen WP-CLI und Shell-Zugriff voraus. Jeder Schritt erklärt, was er tut, damit Sie ihn bei Bedarf im Dashboard oder per SFTP ausführen können.

  1. Lesen Sie zuerst das Server-Fehlerprotokoll

    Alles andere auf dieser Seite ist eine Vermutung, bis Sie es haben. Der Standort variiert; diese beiden decken die meisten Stapel ab.

    tail -n 40 /var/log/nginx/error.log
    tail -n 40 /var/log/apache2/error.log
  2. Nehmen Sie .htaccess aus dem Bild

    Ein Umname sagt Ihnen, ob es sich um Umschreibungsregeln handelt, ohne etwas zu löschen.

    mv .htaccess .htaccess.off
  3. Wenn das es repariert hat, lassen Sie WordPress einen neuen schreiben

    Re-Sparen Permalinks regeneriert den Block WordPress besitzt und fällt, was sonst angesammelt hatte.

    wp rewrite flush --hard
  4. Prüfen Sie Berechtigungen über den Baum

    Alles, was von der Welt geschrieben werden kann, ist sowohl ein 500-Risiko als auch ein Sicherheitsrisiko.

    find . -type d ! -perm 755 | head
    find . -type f ! -perm 644 | head
  5. Bestätigen Sie, dass PHP selbst gesund ist

    Wenn PHP keine triviale Datei ausführen kann, liegt das Problem vollständig unter WordPress.

    php -v && php -r 'echo "php ok\n";'
Mit MagicWP

Darum kümmert sich die Plattform.

Es gibt keinen .htaccess to malform - nginx besitzt die Umschreibungen, und sie werden von der Konfiguration und nicht von einer Datei innerhalb des Web-Roots angewendet, an die jedes Plugin anhängen kann. PHP-Versionen werden pro Site mit dem Erweiterungssatz, der mit ihnen einhergeht, umgeschaltet, so dass die fehlende Erweiterungsversion dieses Fehlers den Switch nicht überlebt, und das Fehlerprotokoll ist ein Klick vom Dashboard und nicht ein Pfad, den Sie erraten müssen.

Häufige Fragen

Häufige Fragen.

Warum sagt die Seite nicht, was schief gelaufen ist?
Ein 500 ist der Statuscode für "etwas ist im Server fehlgeschlagen", und Details werden den Besuchern bewusst vorenthalten, weil sie das Dateisystem für Fremde beschreiben würden.
Unterscheidet sich ein 500 von einem weißen Bildschirm?
Ja, und der Unterschied ist wichtig. Ein 500 bedeutet, dass der Server mit einem Fehlerstatus reagiert hat; ein weißer Bildschirm bedeutet normalerweise, dass er 200 zurückgegeben hat und ein leerer Körper. Sie zeigen auf verschiedene Protokolle.
Alles funktioniert bis auf eine Seite. Kann das eine 500 sein?
Ja. Eine einzelne Vorlage oder eine einzelne Plugin-Route kann fatal sein, während jede andere URL rendert. Beschränken Sie sie durch die URL im Access-Log, anstatt anzunehmen, dass die gesamte Site betroffen ist.
Sollte ich nur die Gedächtnisgrenze erhöhen und sehen?
Das ist nicht das erste, das behebt genau eine der Ursachen hier und verbirgt die anderen, indem es das Timing ändert.
Verwandte Fehler

War es keiner davon?

Diese Fehler können im Browser ähnlich aussehen.