WordPress Wordfence 无法创建 wordfence-waf.php 完全解决教程

有个说他的网站装完 Wordfence 之后一直报错,说无法在根目录创建 wordfence-waf.php 文件。我让他截图给我看,报错信息就一行,说文件权限问题。

我寻思了一下,这事儿我之前也遇到过。当时搞了大半天,差点以为是主机商在搞鬼。后来才发现,就是权限和所有者的问题,但主机面板那套逻辑确实很容易把人绕晕。

WordPress Wordfence 无法创建 wordfence-waf.php 完全解决教程

先说清楚这个 wordfence-waf.php 是什么。

它其实就是 Wordfence 防火墙的防护文件,必须写在网站根目录,跟 wp-config.php 同一层级。

没有这个文件,防火墙就启动不了,相当于你装了个锁但钥匙插不进去。

方案1:面板一键修权限(宝塔/ஹெஸ்டியாசிபி/cPanel)

如果你用的是宝塔,其实最简单。网站进去,找到对应站点,点设置,目录权限那块,网站根目录改成 755,所有文件改成 644。然后看看运行用户是不是 www,不是的话切换一下。点个修复权限按钮,等它跑完,刷新 Wordfence 重试就行了。

HestiaCP 的话,你进网站编辑页面,开一个叫 Allow write access to web root 的选项。然后跑几条 SSH 命令,把网站目录的所有者和权限统一一下。

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 更直观,文件管理器进去,右上角打开显示隐藏文件,右键目录改权限 755,文件改 644,高级选项里还有个修复文件所有者的功能。

方案2:SSH 手动改权限(通用லினக்ஸ்)

面板搞不定的时候,SSH 手动来。连上服务器,先统一所有者。LNMP/LEMP 环境下,web 运行组一般都是 www-data 或者 www。

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

然后把文件夹权限统一 755,文件统一 644。

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

跑完回到 WP 后台,重新启用防火墙,大概率就好了。

方案3:手动创建 wordfence-waf.php(权限锁死时的杀手锏)

面板 SSH 都改不了的时候,直接手动来。在根目录新建 wordfence-waf.php,把下面这段代码粘进去。

<?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';

版本号 7.11.0 记得换成你当前的 Wordfence 版本。文件权限设成 644,所有者跟网站一致。然后编辑 wp-config.php,在文件最顶部加一行。

require_once 'wordfence-waf.php';

保存,刷新 Wordfence,防火墙会自动识别,不再报错。

方案4:检查限制写入的规则

有些时候不是权限的问题,是配置文件在拦着。你打开 .htaccess,把所有 Deny all、限制文件写入、禁止创建 PHP 的规则全删了。Nginx 的话,站点配置里看看有没有 root 路径 read only 或者 create_file off 这种限制,删掉。

还有一种情况,虚拟主机或者轻云主机本身就限制根目录生成 PHP 文件。这种你找主机商解除限制,或者切换 Wordfence 的防护模式。Wordfence 菜单进去,All Options,WAF,防护引擎模式改成 Extended Protection,可以绕开根文件创建。

方案5:插件冲突导致拦截

有些缓存插件或者安全插件会拦截这个操作。临时关掉 WP Rocket、W3 Total Cache、LiteSpeed Cache 这些缓存插件,还有 Sucuri、iThemes Security 这些安全插件。然后清一下服务器缓存和 opcache,重启 PHP 服务。

systemctl restart php8.3-fpm

快速排查顺序(建议按顺序操作)

建议你直接按这个顺序来,省得乱搞一通。先修权限和所有者统一,这是最高概率解决的。不行就重启 PHP-FPM 刷新后台。再不行就手动新建文件改 wp-config。然后检查 Nginx 或 Apache 配置有没有禁止根目录新建 PHP 文件。最后再考虑切换防火墙模式。

有个事必须提醒一下,权限千万别乱设 777。文件夹 755,文件 644,这是标准。设 777 会直接把网站暴露出去,安全风险极高,到时候被入侵了哭都来不及。

说实话我也不确定这些方案对你的情况有没有用,但我已经把我踩过的坑和摸索出来的方法都分享了。你要是还有别的报错信息,截图发给我,我再帮你看看。

இதுவரை படித்த உங்களுக்கு இது பயனுள்ளதாக இருந்தால், தயவுசெய்து லைக் செய்து பகிருங்கள். புதிய தகவல்களை முதலில் பெற விரும்பினால், நீங்கள் என்னைப் பின்தொடரவும் செய்யலாம்!

என் கட்டுரையைப் படித்ததற்கு நன்றி. அடுத்த முறை சந்திப்போம்.

ஹோப் சென் வெலியாங் வலைப்பதிவு ( https://www.chenweiliang.com/ ) 分享的《WordPress Wordfence 无法创建 wordfence-waf.php 完全解决教程》,对您有帮助。

இந்தக் கட்டுரையின் இணைப்பைப் பகிர வரவேற்கிறோம்:https://www.chenweiliang.com/cwl-34337.html

மேலும் மறைக்கப்பட்ட தந்திரங்களைத் திறக்க🔑, எங்கள் டெலிகிராம் சேனலில் சேர வரவேற்கிறோம்!

பிடித்திருந்தால் லைக் செய்து பகிருங்கள்! உங்களின் ஷேர்களும் லைக்குகளும் எங்களின் தொடர் உந்துதலாகும்!

 

发表 评论

உங்கள் மின்னஞ்சல் முகவரி வெளியிடப்படாது. தேவையான புலங்கள் பயன்படுத்தப்படுகின்றன * லேபிள்

கட்டுரை அடைவு
டாப் உருட்டு