开启 DISALLOW_FILE_EDIT 的核心目的,是禁用 WordPress 后台的主题/插件文件编辑器(Theme/Plugin Editor),降低被盗号后“直接在后台塞恶意代码”的风险。它不影响 Elementor/Gutenberg 的可视化编辑,也不会阻止 FTP/SSH/面板对文件的修改。要让它真正生效,关键在于:写对位置、写对语法、确认没有被其他配置覆盖。
![图片[1]-DISALLOW_FILE_EDIT无效?wp-config写对了吗](https://www.361sale.com/wp-content/uploads/2026/02/20260209101922699-image.png)
1. DISALLOW_FILE_EDIT 最正确的放置位置
结论:放在站点根目录的 wp-config.php 里,且必须在这一行之前:
/* That's all, stop editing! Happy publishing. */
原因很简单:wp-config.php 在 WordPress 启动早期加载,DISALLOW_FILE_EDIT 需要在后台加载相关功能前就已经定义,否则可能出现“看似写了但没生效”的情况。
2. wp-config.php 标准写法(推荐模板)
在 wp-config.php 中找到下面这段(一般靠近文件底部):
/* That's all, stop editing! Happy publishing. */
然后把配置写在它的上面,例如:
define('DISALLOW_FILE_EDIT', true);
推荐你把它和其他安全相关项放在一起,例如:
/** Security hardening */
define('DISALLOW_FILE_EDIT', true);
3. 常见写错方式(导致无效或报错)
3.1 放在了注释下面(太晚加载)
如果你写在:
/* That's all, stop editing! Happy publishing. */
require_once ABSPATH . 'wp-settings.php';
这两行的下面,基本等于没用。
3.2 少了引号、少了分号、写成全角符号
必须是英文半角字符,且要有分号:
✅ 正确:
define('DISALLOW_FILE_EDIT', true);
❌ 错误示例:
define(DISALLOW_FILE_EDIT, true) // 少引号
define('DISALLOW_FILE_EDIT', true) // 少分号
define('DISALLOW_FILE_EDIT', true); // 中文逗号
3.3 重复定义(可能被覆盖/报 Warning)
如果你或某些安全插件/托管环境已经定义过一次,再定义可能出现冲突。更稳的写法:
if (!defined('DISALLOW_FILE_EDIT')) {
define('DISALLOW_FILE_EDIT', true);
}
4. DISALLOW_FILE_EDIT 到底会禁用什么?不会禁用什么?
4.1 会禁用
- WP 后台的:
- 外观 → 主题文件编辑器
- 插件 → 插件文件编辑器
4.2 不会禁用
- Elementor / Gutenberg 可视化编辑
- 通过 FTP/SFTP/SSH/面板文件管理器改文件
- 插件/主题安装与更新(这个要用
DISALLOW_FILE_MODS) - 恶意代码通过漏洞写入文件(例如 uploads 写入 webshell)
5. 你可能还需要 DISALLOW_FILE_MODS(重要区分)
很多人开了 DISALLOW_FILE_EDIT,但仍出现“插件/主题被改、被插码”,原因是攻击发生在编辑器之外。如果你的运营流程允许(比如你用 Git/CI 部署),建议同时启用:
define('DISALLOW_FILE_MODS', true);
它会阻止:
- 后台安装/更新/删除插件主题
- 后台在线更新 WordPress 核心
⚠️ 注意:启用后你要用手动上传或部署来更新。
6. 如何快速确认是否生效?
6.1 后台界面检查(最直观)
![图片[2]-DISALLOW_FILE_EDIT无效?wp-config写对了吗](https://www.361sale.com/wp-content/uploads/2026/02/20260209103427174-image.png)
开启后,后台一般会:
- 看不到 Theme/Plugin Editor 菜单
- 或进入编辑器会提示无权限
6.2 用代码/信息页确认(更可靠)
在 wp-config.php 写好后,清理缓存(页面缓存/对象缓存/CDN)再看结果。
如果你用安全插件/托管平台,有时会额外隐藏菜单导致误判,所以最好搭配“文件是否还能被后台编辑”来判断。
7. 写好仍“无效”的 8 个排错点(按优先级)
- 你编辑的不是正在运行的那份 wp-config.php
多站点、子目录、软链接、面板路径错最常见。 - 站点有额外加载的配置文件覆盖
例如某些主机把关键常量写进服务器级配置,或在早期引导里定义了同名常量。 - 你写在了
wp-settings.phprequire 之后
位置不对。 - 有 MU 插件或安全插件在运行时定义/修改行为
wp-content/mu-plugins/里可能有强制策略。 - 对象缓存/OPcache 导致代码看似没更新
重启 PHP-FPM/清理 OPcache(如果你有权限),或等待缓存过期。 - 文件编码或隐藏字符导致 PHP 解析异常
比如 BOM、复制粘贴带了不可见字符。 - wp-config.php 权限不合理
太宽松也危险,太严格可能导致无法读取。一般建议 640 或 600(按你的运行用户与组)。 - 你以为是“编辑器还在”,其实是其他入口在改文件
如果文件仍被插码,优先查 FTP/面板/SFTP、账号泄露、插件漏洞、uploads 执行等。
8. 安全建议:把“开关”变成“体系”
如果你的目标是降低被篡改风险,建议至少做这 5 件事:
- 开启
DISALLOW_FILE_EDIT(防后台编辑器塞码) - 需要时开启
DISALLOW_FILE_MODS(防后台安装/更新写入) - 禁止
wp-content/uploads执行 PHP(从源头砍掉常见上传链) - 所有管理员开启 2FA + 强密码 + 不复用密码
- 做文件完整性监控(文件 hash 变更告警,比事后排查省很多)
9. 推荐配置组合
仅禁用编辑器:
if (!defined('DISALLOW_FILE_EDIT')) {
define('DISALLOW_FILE_EDIT', true);
}
禁用编辑器 + 禁止后台改动文件(更强):
if (!defined('DISALLOW_FILE_EDIT')) {
define('DISALLOW_FILE_EDIT', true);
}
if (!defined('DISALLOW_FILE_MODS')) {
define('DISALLOW_FILE_MODS', true);
}
放置位置:都写在 /* That's all, stop editing! Happy publishing. */ 之前。
| 联系我们 | |
|---|---|
| 教程看不懂?联系我们为您免费解答!免费助力个人,小企站点! |
客服微信
|
| ① 电话:020-2206-9892 | |
| ② QQ咨询:1025174874 | |
| ③ 邮件:info@361sale.com | |
| ④ 工作时间:周一至周五,9:30-18:30,节假日休息 | |






















![表情[wozuimei]-光子波动网 | 专业WordPress修复服务,全球范围,快速响应](https://www.361sale.com/wp-content/themes/zibll/img/smilies/wozuimei.gif)
![表情[baoquan]-光子波动网 | 专业WordPress修复服务,全球范围,快速响应](https://www.361sale.com/wp-content/themes/zibll/img/smilies/baoquan.gif)

暂无评论内容