Vollständiges Tutorial zur Fehlerbehebung bei WordPress Wordfence: Problem beim Erstellen der Datei wordfence-waf.php

Jemand berichtete, dass er nach der Installation von Wordfence auf seiner Website ständig Fehlermeldungen erhielt, die besagten, dass die Datei wordfence-waf.php im Stammverzeichnis nicht erstellt werden konnte. Ich bat ihn um einen Screenshot; die Fehlermeldung bestand nur aus einer Zeile und wies auf ein Problem mit den Dateiberechtigungen hin.

Ich habe kurz darüber nachgedacht und festgestellt, dass mir das schon mal passiert war. Ich habe ewig gebraucht, um das Problem zu lösen, und dachte schon fast, der Hosting-Anbieter hätte etwas im Schilde. Es stellte sich heraus, dass es ein Problem mit Berechtigungen und Eigentumsverhältnissen war, aber die Logik des Hosting-Kontrollpanels kann wirklich verwirrend sein.

Vollständiges Tutorial zur Fehlerbehebung bei WordPress Wordfence: Problem beim Erstellen der Datei wordfence-waf.php

Lassen Sie mich zunächst klären, was diese Datei wordfence-waf.php ist.

Es handelt sich dabei um die Schutzdatei der Wordfence-Firewall, die im Stammverzeichnis der Website, auf der gleichen Ebene wie wp-config.php, abgelegt werden muss.

Ohne diese Datei kann die Firewall nicht gestartet werden; es ist, als hätte man ein Schloss installiert, aber der Schlüssel könne nicht eingeführt werden.

Option 1: Berechtigungsänderung mit einem Klick über das Bedienfeld (BT Panel/)HestiaCP/cPanel)

Wenn Sie BT Panel verwenden, ist es am einfachsten. Rufen Sie Ihre Website auf, suchen Sie die entsprechende Seite, klicken Sie auf „Einstellungen“ und dann auf „Verzeichnisberechtigungen“. Ändern Sie die Berechtigung für das Website-Stammverzeichnis auf 755 und die Berechtigung für alle Dateien auf 644. Prüfen Sie anschließend, ob der Benutzer „www“ ist; falls nicht, ändern Sie ihn. Klicken Sie auf „Berechtigungen reparieren“, warten Sie, bis der Vorgang abgeschlossen ist, aktualisieren Sie Wordfence und versuchen Sie es erneut.

Gehen Sie bei HestiaCP zur Bearbeitungsseite der Website und aktivieren Sie die Option „Schreibzugriff auf das Web-Root-Verzeichnis erlauben“. Führen Sie anschließend einige SSH-Befehle aus, um den Eigentümer und die Berechtigungen des Website-Verzeichnisses zu vereinheitlichen.

chown -R admin:www-data /home/admin/web/你的域名/public_html
chmod -R 755 /home/admin/web/你的域名/public_html
find /home/admin/web/你的域名/public_html -type f -print0 | xargs -0 chmod 644

cPanel ist intuitiver. Öffnen Sie den Dateimanager, aktivieren Sie oben rechts die Option „Versteckte Dateien anzeigen“, klicken Sie mit der rechten Maustaste auf das Verzeichnis und ändern Sie die Berechtigungen auf 755, die Dateiberechtigungen auf 644. In den erweiterten Optionen finden Sie außerdem eine Funktion zum Festlegen des Dateibesitzers.

Option 2: Berechtigungen manuell per SSH ändern (allgemein)Linux)

Falls das Control Panel die Verbindung nicht herstellen kann, verwenden Sie SSH manuell. Nach der Verbindung zum Server müssen Sie zunächst die Besitzrechte vereinheitlichen. In einer LNMP/LEMP-Umgebung ist die Web-Laufzeitgruppe typischerweise www-data oder www.

chown -R 你的面板用户:www-data /网站根目录完全路径

Setzen Sie anschließend die Ordnerberechtigungen auf 755 und die Dateiberechtigungen auf 644.

find /网站根目录 -type d -print0 | xargs -0 chmod 755
find /网站根目录 -type f -print0 | xargs -0 chmod 644

Nach Abschluss des Vorgangs kehren Sie zum WP-Backend zurück und aktivieren die Firewall erneut; dies sollte das Problem höchstwahrscheinlich beheben.

Option 3: Wordfence-waf.php manuell erstellen (eine hervorragende Lösung, wenn die Berechtigungen gesperrt sind)

Falls Sie über das SSH-Panel keine Änderungen vornehmen können, führen Sie diese manuell durch. Erstellen Sie im Stammverzeichnis eine Datei namens wordfence-waf.php und fügen Sie den folgenden Code ein.

<?php
if (!defined('WFWAF_VERSION')) {
    define('WFWAF_VERSION', '7.11.0');
}
$wafConfig = array(
    'wafAutoPrepend' => true,
    'wafFile' => __FILE__,
    'wpContentDir' => dirname(__FILE__) . '/wp-content',
    'wpPluginsDir' => dirname(__FILE__) . '/wp-content/plugins',
    'wafLogDir' => dirname(__FILE__) . '/wp-content/wflogs',
);
require_once $wafConfig['wpPluginsDir'] . '/wordfence/lib/waf/waf.php';

Denken Sie daran, Version 7.11.0 durch Ihre aktuelle Wordfence-Version zu ersetzen. Setzen Sie die Dateiberechtigungen auf 644, und der Eigentümer sollte mit der Website übereinstimmen. Bearbeiten Sie anschließend die Datei wp-config.php und fügen Sie die folgende Zeile ganz oben in der Datei ein.

require_once 'wordfence-waf.php';

Speichern und aktualisieren Sie Wordfence. Die Firewall erkennt es automatisch und meldet keine Fehler mehr.

Option 4: Überprüfen Sie die Regeln, die den Schreibzugriff einschränken.

Manchmal liegt es nicht an fehlenden Berechtigungen, sondern an der Konfigurationsdatei. Öffnen Sie Ihre .htaccess-Datei und löschen Sie alle Regeln, die den Schreibzugriff auf Dateien einschränken oder die Erstellung von PHP-Dateien verhindern. Überprüfen Sie bei Nginx die Konfiguration Ihrer Website auf Einschränkungen wie „Nur lesbar“ für das Stammverzeichnis oder „create_file deaktiviert“ und entfernen Sie diese.

Ein weiteres Szenario ist, dass der virtuelle Host oder das Cloud-Hosting-Angebot selbst die Erstellung von PHP-Dateien im Stammverzeichnis einschränkt. In diesem Fall müssen Sie sich an Ihren Hosting-Anbieter wenden, um die Einschränkung aufheben zu lassen, oder den Schutzmodus von Wordfence ändern. Gehen Sie dazu im Wordfence-Menü auf „Alle Optionen“, dann auf „WAF“ und ändern Sie den Schutzmodus auf „Erweiterter Schutz“, um die Erstellung von Stammdateien zu umgehen.

Lösung 5: Plugin-Konflikte verursachen Blockierungen

Einige Caching- oder Sicherheits-Plugins können diesen Vorgang blockieren. Deaktivieren Sie vorübergehend Caching-Plugins wie WP Rocket, W3 Total Cache und LiteSpeed ​​Cache sowie Sicherheits-Plugins wie Sucuri und iThemes Security. Leeren Sie anschließend den Server-Cache und den Opcache und starten Sie den PHP-Dienst neu.

systemctl restart php8.3-fpm

Schnelle Fehlerbehebungssequenz (es wird empfohlen, die Schritte in dieser Reihenfolge zu befolgen)

Um unnötige Komplikationen zu vermeiden, empfehle ich Ihnen folgende Vorgehensweise: Vereinheitlichen Sie zunächst die Berechtigungen und Besitzverhältnisse; dies löst das Problem mit hoher Wahrscheinlichkeit. Sollte das nicht funktionieren, starten Sie PHP-FPM neu und aktualisieren Sie das Backend. Falls auch das nicht hilft, erstellen Sie manuell eine neue Datei und bearbeiten Sie die wp-config.json-Datei. Prüfen Sie anschließend, ob Ihre Nginx- oder Apache-Konfiguration das Erstellen neuer PHP-Dateien im Stammverzeichnis blockiert. Abschließend sollten Sie einen Wechsel des Firewall-Modus in Betracht ziehen.

Eines muss ich Ihnen unbedingt mitgeben: Setzen Sie niemals Berechtigungen auf 777. Ordnerberechtigungen sollten 755 und Dateiberechtigungen 644 lauten; das ist der Standard. Berechtigungen auf 777 zu setzen, macht Ihre Website ungeschützt und birgt ein extrem hohes Sicherheitsrisiko. Im Falle eines Hackerangriffs ist es dann zu spät, es zu bereuen.

Ehrlich gesagt bin ich mir nicht sicher, ob diese Lösungen in Ihrem Fall funktionieren, aber ich habe die Schwierigkeiten, auf die ich gestoßen bin, und die Methoden, die ich gefunden habe, beschrieben. Sollten Sie weitere Fehlermeldungen erhalten, machen Sie bitte einen Screenshot und schicken Sie ihn mir, dann sehe ich mir das noch einmal an.

Da du bis hierher gelesen hast: Wenn dir der Beitrag gefallen hat, teile ihn bitte. Wenn du als Erster über Neuigkeiten informiert werden möchtest, kannst du mir auch folgen!

Vielen Dank fürs Lesen meines Artikels. Bis zum nächsten Mal.

发表 评论

Ihre E-Mail-Adresse wird nicht veröffentlicht. 必填 项 已 已 * 标注

Nach oben scrollen