Wissensdatenbank · Skripte & Programme

WordPress-Administration defekt: Fehler 403 bei load-styles.php / load-scripts.php

Zuletzt aktualisiert am 2025-12-10

WordPress wp-admin: 403-Fehler bei load-styles.php / load-scripts.php (Wordfence WAF / auto_prepend_file)

Zusammenfassung

Nach einem Update von WordPress oder eines Plugins wird bei manchen Websites plötzlich der wp-admin-Bereich fehlerhaft angezeigt:

  • Die Anmeldung funktioniert, aber das Admin-Dashboard wird ohne Formatierung, leer oder nur teilweise geladen angezeigt.
  • In den Entwicklertools des Browsers → Netzwerk wird Folgendes angezeigt: 403 Forbidden für:
    • wp-admin/load-styles.php
    • wp-admin/load-scripts.php
  • Das Deaktivieren von Plugins im wp-admin oder sogar das Umbenennen von wp-content/plugins, funktioniert nicht den Fehler 403 beheben.

In vielen Fällen liegt die root-Ursache bei Wordfence Web Application Firewall (WAF) weiterhin geladen wird, und zwar über auto_prepend_file in .htaccess und/oder .user.ini, selbst nachdem das Plugin deaktiviert wurde.

 

Symptome

  • Der WordPress-Administrationsbereich wird nur teilweise oder ohne CSS/JS geladen.
  • In den Entwicklertools Ihres Browsers → Registerkarte „Netzwerk“:
    • wp-admin/load-styles.php und/oder wp-admin/load-scripts.php anzeigen 403 Forbidden.
  • Das Apache-Fehlerprotokoll zeigt Zeilen ähnlich wie:
    [authz_core:error] AH01630: client denied by server configuration: /home/USER/public_html/wp-admin/load-styles.php
    [authz_core:error] AH01630: client denied by server configuration: /home/USER/public_html/wp-admin/load-scripts.php
  • Das Umbenennen wp-content/plugins oder Deaktivieren von Plugins über das Dashboard behebt den Fehler nicht nicht.

 

Ursache

Wenn Wordfence WAF im Modus Extended Protection aktiviert ist, handelt es sich nicht nur um ein gewöhnliches WordPress-Plugin. Es bindet sich außerdem über folgende Dateien in PHP ein: auto_prepend_file.

Konkret führt Wordfence Folgendes durch:

  1. Es fügt Ihrer PHP-Konfiguration eine auto_prepend_file Direktive über Folgendes zu Ihrer PHP-Konfiguration hinzu:
    • .htaccess (Apache)
    • .user.ini (PHP-Einstellungen pro Verzeichnis)
  2. Es lässt diese Direktive auf eine Bootstrap-Datei verweisen, zum Beispiel:
    # In .htaccess
    php_value auto_prepend_file /home/USER/public_html/wordfence-waf.php
    
    ; In .user.ini
    auto_prepend_file = "/home/USER/public_html/wordfence-waf.php"
    

Dadurch wird erzwungen, dass jede PHP-Anfrage (Frontend, wp-admin, AJAX, Cron usw.) zuerst diese Datei lädt, bevor wordfence-waf.php zu wechseln auf WordPress geladen wird. Selbst wenn Sie das Wordfence-Plugin deaktivieren oder entfernen, kann der WAF-Bootstrap weiterhin:

  • bestimmte Pfade blockieren (z. B. load-styles.php, load-scripts.php, wp-cron.php) oder
  • nach einem Upgrade von WordPress oder PHP aufgrund veralteten bzw. nicht passenden Codes fehlschlagen.

Da dies auf PHP- bzw. Apache-Ebene abläuft, reicht es nicht aus, das Plugin einfach in wp-admin zu deaktivieren.

 

So bestätigen Sie, dass Wordfence / auto_prepend_file die Ursache ist

1. Apache-/PHP-Fehlerprotokolle prüfen

Suchen Sie in Ihrem Virtual-Host-Fehlerprotokoll oder im globalen Apache-Fehlerprotokoll nach Zeilen wie:

[authz_core:error] AH01630: client denied by server configuration: /home/USER/public_html/wp-admin/load-styles.php
[authz_core:error] AH01630: client denied by server configuration: /home/USER/public_html/wp-admin/load-scripts.php

Wenn Sie bei diesen WordPress-Core-Endpunkten 403-Fehler sehen und das übliche Deaktivieren von Plugins nicht hilft, liegt der Verdacht auf der WAF bzw. auto_prepend_file.


2. Prüfen Sie .user.ini im Document-root-Verzeichnis

  1. Wechseln Sie per SSH oder über den Dateimanager in das root-Verzeichnis Ihrer Website (zum Beispiel /home/USER/public_html).
  2. Öffnen Sie .user.ini und suchen Sie nach einer Zeile, die dem Folgenden ähnelt:
    auto_prepend_file = "/home/USER/public_html/wordfence-waf.php"


3. Prüfen Sie .htaccess auf Wordfence WAF

  1. Öffnen Sie im selben Verzeichnis .htaccess.
  2. Suchen Sie nach einem Wordfence-WAF-Block, zum Beispiel:
    # Wordfence WAF
    # <IfModule mod_php7.c>
    php_value auto_prepend_file /home/USER/public_html/wordfence-waf.php
    # </IfModule>

Sind diese vorhanden, wird Wordfence WAF weiterhin in jede PHP-Anfrage eingebunden, selbst wenn das Plugin deaktiviert ist.

 

Lösung: Wordfence WAF ordnungsgemäß entfernen

Warnung: Führen Sie dies nur durch, wenn Sie Wordfence WAF deaktivieren möchten. Wenn Sie Wordfence weiterhin nutzen möchten, konfigurieren Sie den erweiterten Schutz (Extended Protection) über die eigene Oberfläche von Wordfence neu.


Schritt 1: Wordfence-Plugin deaktivieren (falls möglich)

  1. Melden Sie sich in wp-admin an.
  2. Gehen Sie zu Plugins → Installierte Plugins.
  3. Deaktivieren Wordfence Security.

Wenn wp-admin vollständig nicht mehr funktioniert, können Sie diesen Schritt überspringen und direkt mit der Bearbeitung der Dateien fortfahren.

Schritt 2: Entfernen Sie auto_prepend_file von .user.ini

  1. In Ihrem WordPress-Dokument root, offen .user.ini.
  2. Suchen Sie die Wordfence-Zeile:
    auto_prepend_file = "/home/USER/public_html/wordfence-waf.php"
  3. Kommentieren Sie sie aus oder entfernen Sie sie, zum Beispiel:
    ; auto_prepend_file = "/home/USER/public_html/wordfence-waf.php"
  4. Speichern Sie die Datei.

Schritt 3: Entfernen auto_prepend_file von .htaccess

  1. Öffnen Sie im selben Verzeichnis .htaccess.
  2. Suchen Sie nach dem Wordfence-WAF-Block, z. B.:
    # Wordfence WAF
    <IfModule mod_php7.c>
        php_value auto_prepend_file /home/USER/public_html/wordfence-waf.php
    </IfModule>
  3. Kommentieren Sie ihn aus oder entfernen Sie ihn:
    # Wordfence WAF disabled
    # <IfModule mod_php7.c>
    #     php_value auto_prepend_file /home/USER/public_html/wordfence-waf.php
    # </IfModule>
  4. Speichern Sie die Datei.

Schritt 4: Opcode-Cache leeren / PHP neu starten (optional, aber empfohlen)

  • Wenn Sie PHP-FPM / LSAPI / FastCGI verwenden, starten Sie PHP-FPM bzw. LiteSpeed / Apache neu.
  • Alternativ bitten Sie Ihren Hosting-Anbieter, den PHP-Opcache für dieses Konto zu leeren.

Schritt 5: wp-admin testen

  1. Öffnen Sie /wp-admin/ in Ihrem Browser.
  2. Öffnen Sie die DevTools → Netzwerk und laden Sie die Seite anschließend neu.
  3. Überprüfen Sie Folgendes:
    • wp-admin/load-styles.php liefert 200 OK.
    • wp-admin/load-scripts.php liefert 200 OK.
    • Die Administrationsoberfläche wird wieder normal dargestellt (CSS/JS geladen).

Falls Sie zuvor temporäre Überschreibungen hinzugefügt haben (zum Beispiel eine wp-admin/.htaccess die diese Dateien bedingungslos zugelassen hat), können Sie diese entfernen, sobald alles wieder normal funktioniert.

 

Optional: Wordfence-Dateien bereinigen

Wenn Sie Wordfence vollständig nicht mehr benötigen, können Sie außerdem Folgendes tun:

  • Löschen oder umbenennen:
    • wp-content/plugins/wordfence/
    • wp-content/wflogs/ (Protokollverzeichnis)
  • Entfernen wordfence-waf.php aus Ihrem Document root, sofern sie nirgendwo mehr referenziert wird.

Künftige Probleme vermeiden

  • Beachten Sie, dass Sicherheits-Plugins mit WAF / “Extended Protection” Folgendes verändern können:
    • .htaccess
    • .user.ini
    • Globales PHP-Verhalten über auto_prepend_file
  • Das Deaktivieren des Plugins im Dashboard nicht entfernen diese systemnahen Hooks automatisch.
  • Wenn Sie bei zentralen WordPress-Dateien wie seltsame 403-Fehler oder die Meldung „client denied by server configuration“ sehen load-styles.php, load-scripts.php, oder wp-cron.php, prüfen Sie stets Folgendes:
    • auto_prepend_file Zeilen in .user.ini als auch die .htaccess.
    • Übrig gebliebene WAF-Bootstrap-Dateien wie wordfence-waf.php.

Zusammenfassung

Problem: WordPress-Administrationsbereich defekt, load-styles.php / load-scripts.php gibt den Fehler 403 zurück, selbst nach dem Deaktivieren der Plugins.

Ursache: Die Wordfence-WAF wird weiterhin eingebunden über auto_prepend_file in .htaccess / .user.ini, wodurch wordfence-waf.php bei jeder Anfrage geladen wird und diese Endpunkte blockiert.

Lösung:

  1. Deaktivieren Sie das Wordfence-Plugin (sofern möglich).
  2. Entfernen auto_prepend_file Verweise auf wordfence-waf.php von .htaccess als auch die .user.ini.
  3. Laden Sie PHP / Apache neu und testen Sie wp-admin erneut – die 403-Fehler bei load-styles.php / load-scripts.php sollten verschwinden.

← Alle Knowledgebase Artikel

Tell us what you need

Compare available plans or describe your workload so we can discuss a suitable starting point.