找到
1
篇与
Typecho
相关的结果
-
Typecho插件故障,导致无法禁用,强制删除网站首页都进不去了? 一次 Typecho 插件故障的完整自救记录:从报错到恢复 🚑 前言 前两天,我的 Typecho 博客突然就挂了😱。罪魁祸首是一个叫 WebFirewall 的插件。这玩意儿出问题后,后台那个“禁用”按钮怎么点都没反应,最后整个博客直接摆烂,给我看这个报错: mlq56so3.png图片 call_user_func_array(): Argument #1 ($callback) must be a valid callback, class "TypechoPlugin\WebFirewall\WebFirewall" not found折腾了好几个小时,总算是把它给收拾服帖了。这篇就把我完整的排查和修复过程记录下来,万一你哪天也遇到这糟心事,希望能帮你省点时间⏰。 一、事情是怎么发生的?🤔 整个过程是这样的: 我装了个 WebFirewall 插件 这货可能跟我博客里别的插件八字不合,或者它自己就有 bug 我想去后台把它禁了,结果那个“禁用”按钮就是个摆设,点了一万遍都没反应 一刷新页面,好家伙,博客直接给我脸色看,白屏报错,前台后台都进不去了 当时的状态就是: ✅ 前台:无法访问(卒) ✅ 后台:也进不去(双卒) ✅ 插件文件:虽然还在,但已经是个废物了 ✅ 禁用按钮:彻底失灵 二、试试“曲线救国 注意,请异地导出你的数据库再进行以下操作 2.1 上传一个“空壳”插件 当你强制删除了WebFirewall,报错不是说找不到 WebFirewall 这个类吗?那我给它一个不就完了! 在 /usr/plugins/WebFirewall/ 目录下创建一个 Plugin.php 文件,里面就写这几行: <?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; class WebFirewall_Plugin {}上传,刷新网站——报错依然坚挺。 这说明问题根子不在文件里,而是在数据库里。 三、直捣黄龙,查数据库!🔍 3.1 登录数据库 我用的是 1Panel 面板,直接点进 phpMyAdmin 就是干。 3.2 找到关键线索表 Typecho 的插件信息都藏在 typecho_options 表里,最关键的一行是 name = 'plugins'。 点开看 value 字段,好家伙,一串长长的序列化字符串,里面果然有料: ...s:10:"WebFirewa";a:1:{s:13:"activated";b:1;s:7:"version";s:5:"1.0.0";}... 看到了吧,数据库里还死死记着这个插件是“已激活”状态呢! 3.3 地毯式搜索,不留死角 为了清干净,我执行了 SQL 语句,看看还有哪儿藏着它: SELECT * FROM typecho_options WHERE value LIKE '%WebFirewa%';结果发现: plugins 字段里有它 panelTable 字段里居然也有它的影子 四、终极清理,一招制敌 💪 4.1 清空插件列表(最暴力也最有效) 直接把 name = 'plugins' 那一行的 value 改成: a:0:{}这串代码的意思就是“没有任何启用的插件”。简单粗暴,但有效! UPDATE typecho_options SET value = 'a:0:{}' WHERE name = 'plugins';4.2 清理 panelTable 里的残留 UPDATE typecho_options SET value = REPLACE(value, 's:10:"WebFirewa";a:1:{s:13:"activated";b:1;s:7:"version";s:5:"1.0.0";}', '') WHERE name = 'panelTable' AND value LIKE '%WebFirewa%';4.3 见证奇迹的时刻✨ 修改完数据库,怀着激动的心,颤抖的手,刷新博客首页——恢复了!恢复了! 我的博客又回来了! 五、打扫战场,收尾工作 🧹 5.1 重新启用插件 赶紧登录后台 → 插件管理,把我之前用的那些正经插件(比如 pScaleUpPlus、AutoSlug 这些)重新启用起来。谢天谢地,配置都还在,不用重新设置。 六、吃一堑,长一智的经验总结 📝 6.1 插件故障时,UI 按钮就是个弟弟 插件自己都挂了,它那个“禁用”按钮的代码根本跑不起来。这时候: ✅ 直接操作数据库,那才是最根本的解决方案 ❌ 死磕后台那个按钮,只会让你怀疑人生 七、给兄弟姐妹们的几句心里话 ❤️ 数据库一定要定期备份! —— 这玩意儿关键时刻能救你老命 插件这玩意儿,够用就行,别贪多 —— 每多一个插件,就多一个潜在的雷 学会直接操作数据库 —— 这是绕过所有 UI 故障的终极大招,值得拥有 结语 这次故障从发生到解决,前前后后花了差不多半天。虽然过程挺折腾人的,但也让我对 Typecho 的插件原理、数据库结构、以及缓存策略这些,都有了更深的理解。 如果你也遇到类似的倒霉事儿,希望这篇文章能给你指条明路,少走点弯路。 有啥问题或者想交流的,欢迎在下面留言!👇