WordPress wp-admin 403 auf load-styles.php / load-scripts.php (Wordfence WAF / auto prepend file)
Zusammenfassung
Nach einem WordPress- oder Plugin-Update sehen einige Websites plötzlich einen defekten WP-Admin-Bildschirm:
- Login funktioniert, aber das Admin-Dashboard sieht unstiled, leer oder halb geladen aus.
- Browser DevTools → Network shows 403 Verboten für:
wp-admin/load-styles.phpwp-admin/load-scripts.php
- Deaktivieren von Plugins aus wp-admin oder sogar Umbenennen
wp-content/plugins, tut nicht Behebe die 403.
In vielen Fällen ist die Ursache Wordfence Web Application Firewall (WAF) noch geladen via auto_prepend_file in .htaccess und/oder .user.iniAuch wenn das Plugin deaktiviert ist.
Symptome
- WordPress Admin lädt teilweise oder ohne CSS/JS.
- In your browser’s DevTools → Network tab:
wp-admin/load-styles.phpund/oderwp-admin/load-scripts.phpSchauer 403 Verboten.
- Apache Error Log zeigt ähnliche 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 - Umbenennung
wp-content/pluginsoder das Deaktivieren von Plugins aus dem Dashboard nicht Beheben Sie den Fehler.
Wurzelursache
Wenn Wordfence WAF aktiviert ist Erweiterter Schutz Modus, es ist nicht nur ein normales WordPress-Plugin. Es injiziert sich auch in PHP über auto_prepend_file.
Genauer gesagt, Wordfence:
- Fügt ein
auto_prepend_fileDirektive zu Ihrer PHP-Konfiguration über:.htaccess(Apache).user.ini(Pro-Directory PHP-Einstellungen)
- Zeigt diese Direktive auf eine Bootstrap-Datei wie:
# 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"
Diese Kräfte Jede PHP-Anfrage (Frontend, wp-admin, AJAX, Cron, etc.) zum Laden wordfence-waf.php vor WordPress. Selbst wenn Sie das Wordfence-Plugin deaktivieren oder entfernen, kann der WAF-Bootstrap dennoch:
- Block spezifische Pfade (z.B.
load-styles.php,load-scripts.php,wp-cron.php), or - Fehlschlagen aufgrund veralteten / nicht übereinstimmenden Codes nach einem WordPress- oder PHP-Upgrade.
Da dies auf PHP / Apache-Ebene läuft, Einfach das Plugin in wp-admin deaktivieren reicht nicht aus.
Wie man It’s Wordfence / auto prepend file bestätigt
1. Überprüfen Sie Apache / PHP-Fehlerprotokolle
Schauen Sie in Ihrem virtuellen Host oder 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 403s auf diesen WordPress-Core-Endpunkten sehen und das normale Deaktivieren des Plugins nicht hilft, vermuten Sie WAF / auto prepend file.
2. Überprüfung .user.ini in der Wurzel des Dokuments
- Via SSH or file manager, go to your site root (for example
/home/USER/public_html). - Offen
.user.iniund suchen Sie nach einer Zeile ähnlich wie:auto_prepend_file = "/home/USER/public_html/wordfence-waf.php"
3. Kontrolle .htaccess für Wordfence WAF
- Im selben Verzeichnis, offen
.htaccess. - 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>
Wenn diese vorhanden sind, wird Wordfence WAF weiterhin in jede PHP-Anfrage eingespeist, auch wenn das Plugin deaktiviert ist.
Fix: Wordfence WAF richtig stilllegen
Warnung: Tun Sie dies nur, wenn Sie Wordfence WAF deaktivieren möchten. Wenn Sie Wordfence weiterhin möchten, verwenden Sie eine eigene Benutzeroberfläche, um Extended Protection neu zu konfigurieren.
Step 1: Wordfence Plugin deaktivieren (wenn möglich)
- Melden Sie sich bei wp-admin an.
- Gehen Sie zu Plugins → Installierte Plugins.
- Deaktivieren Wordfence Security.
Wenn wp-admin vollständig kaputt ist, können Sie diesen Schritt überspringen und direkt zum Bearbeiten von Dateien gehen.
Step 2: Entfernen auto_prepend_file von .user.ini
- In Ihrem WordPress-Dokument root, offen
.user.ini. - Finden Sie die Wordfence-Linie:
auto_prepend_file = "/home/USER/public_html/wordfence-waf.php" - Kommentieren Sie es oder entfernen Sie es , beispielsweise:
; auto_prepend_file = "/home/USER/public_html/wordfence-waf.php" - Speichern Sie die Datei.
Step 3: Entfernen auto_prepend_file von .htaccess
- Im selben Verzeichnis, offen
.htaccess. - 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> - Kommentieren Sie es oder entfernen Sie es:
# Wordfence WAF disabled # <IfModule mod_php7.c> # php_value auto_prepend_file /home/USER/public_html/wordfence-waf.php # </IfModule> - Speichern Sie die Datei.
Step 4: Klarer Opcode-Cache / Neustart von PHP (optional, aber empfohlen)
- Wenn Sie PHP-FPM / LSAPI / FastCGI verwenden, starten Sie PHP-FPM oder LiteSpeed / Apache neu.
- Alternativ bitten Sie Ihren Hosting-Provider, PHP-Opcache für dieses Konto zu löschen.
Step 5: Test wp-admin
- Offen
/wp-admin/In Ihrem Browser. - Open DevTools → Network, then reload the page.
- Prüfen:
wp-admin/load-styles.phpRückgabe 200 OK.wp-admin/load-scripts.phpRückgabe 200 OK.- Die Admin-Schnittstelle sieht wieder normal aus (CSS/JS geladen).
If you previously added any temporary overrides (for example a wp-admin/.htaccess that unconditionally allowed those files), you can remove them once everything works normally.
Optional: Bereinigen von Wordfence-Dateien
Wenn Sie mit Wordfence fertig sind, können Sie auch:
- Löschen oder Umbenennen:
wp-content/plugins/wordfence/wp-content/wflogs/(Logverzeichnis)
- Abnehmen
wordfence-waf.phpaus Ihrem Dokument root, wenn es nirgendwo mehr referenziert wird.
Vermeidung zukünftiger Probleme
- Beachten Sie, dass Sicherheits-Plugins mit WAF / “ Extended Protection ” ändern können:
.htaccess.user.ini- Globales PHP Verhalten über
auto_prepend_file
- Deaktivieren des Plugins aus dem Dashboard nicht Diese Low-Level-Hooks werden automatisch entfernt.
- Wenn Sie seltsame 403s oder “ Client sehen, die durch Serverkonfiguration ” auf WordPress-Kerndateien wie
load-styles.php,load-scripts.php, oderwp-cron.php, immer überprüfen Sie:auto_prepend_fileLinien in.user.iniund.htaccess.- Reste WAF-Bootstrap-Dateien wie
wordfence-waf.php.
Zusammenfassung
Ausgabe: WordPress Admin ist kaputt load-styles.php / load-scripts.php 403 zurückgeben, auch nach Deaktivierung von Plugins.
Ursache: Wordfence WAF noch injiziert via auto_prepend_file in .htaccess / .user.ini, Beladung wordfence-waf.php bei jeder Anforderung und Sperrung dieser Endpunkte.
Fix:
- Wordfence Plugin deaktivieren (wenn möglich).
- Abnehmen
auto_prepend_fileVerweise aufwordfence-waf.phpvon.htaccessund.user.ini. - PHP / Apache neu laden und wp-admin & mdash erneut testen; die 403s auf
load-styles.php/load-scripts.phpsollte verschwinden.