找到
1
篇与
typecho异常修复
相关的结果
-
joe再续前缘主题打不开?提示请求服务器失败,请稍后再试怎么办 各位伙计!昨天字节曜博客的突发故障唠唠 昨天是不是有朋友打开字节曜博客的时候,弹出了这个报错界面? 报错图片 我和另一位编辑昨天下午4点打算更文的时候,也撞上了这个问题——好好的站点突然就打不开了,当时急得不行 第一轮没结果的排查 一开始我们试了好几个思路,都没解决: 另一位编辑想换成WP来解决,结果Typecho的后台都打不开,没法装插件迁移数据,这个方案直接放弃 我怀疑是源码出问题,试着用备份恢复站点,结果也没起作用 折腾到晚上一点头绪都没有,只好先把这事放一放 终于锁定“罪魁祸首” 第二天接着排查,很快就找到方向了: 先确认服务器没问题——宝塔面板能正常打开,排除服务器本身的故障 找了两个同样用Typecho搭建的站点测试:颤立诚小站和NaN博客都能正常访问,只有字节曜打不开 对比之后发现,只有字节曜装了78易航防火墙插件,另外两个站点都没装,结合插件故障的常见原因来看,这个私人加密的防火墙插件,大概率是和当前的Typecho环境出现了兼容性问题 有点曲折的解决过程 确定问题后,我们试了几个解决方法,走了点弯路: 先试着在数据库里删掉这个插件的对应数据,没起作用 试着删除插件目录,结果又爆出了新的报错: mjdxlx9r.png图片 只好先把目录恢复回来 后来发现是WebFirewall.php出了问题,这个插件的原版代码是加密的没法修改,所以我写了一个空壳文件替换它——这个空壳文件去掉了防火墙的功能,只保留了Typecho插件需要的基础结构,避免代码报错,同时兜底捕获未定义的方法调用,防止其他回调出问题: <?php /** * WebFirewall 插件空壳(修复Typecho_Plugin类未找到错误) * 去掉了防火墙功能(原版加密成13了,没法改) * 作者:字节曜 寒烟似雪 */ // 命名空间 namespace TypechoPlugin\WebFirewall; // 引入Typecho核心类 if (!class_exists('Typecho_Plugin')) { require_once __DIR__ . '/../../../var/Typecho/Plugin.php'; } // 核心类(匹配错误提示的WebFirewall) class WebFirewall { /** * 插件激活方法(空实现) */ public static function activate() { return true; } /** * 插件禁用方法(空实现) */ public static function deactivate() { return true; } /** * 插件配置方法(空实现) */ public static function config(\Typecho_Widget_Helper_Form $form) { // 空配置,无字段 } /** * 个人配置方法(空实现) */ public static function personalConfig(\Typecho_Widget_Helper_Form $form) { // 空配置 } /** * 兜底:捕获所有未定义的静态方法调用(防止其他回调报错) */ public static function __callStatic($name, $arguments) { return null; } } // Typecho_Plugin前加\,表示调用全局命名空间的类 \Typecho_Plugin::factory('Plugin.php')->activate = ['TypechoPlugin\WebFirewall\WebFirewall', 'activate']; \Typecho_Plugin::factory('Plugin.php')->deactivate = ['TypechoPlugin\WebFirewall\WebFirewall', 'deactivate']; \Typecho_Plugin::factory('Plugin.php')->config = ['TypechoPlugin\WebFirewall\WebFirewall', 'config']; \Typecho_Plugin::factory('Plugin.php')->personalConfig = ['TypechoPlugin\WebFirewall\WebFirewall', 'personalConfig']; ?>替换之后顺利进到了后台,第一件事就是把这个私人插件卸载了: 卸载插件图片 给同用Typecho的朋友提个醒 如果你们也遇到这类私人加密插件导致站点打不开、后台进不去的情况,可以试试这个空壳文件的方法: 替换对应的插件PHP文件 进到后台后直接卸载插件 气死我了,可恶的🐔🐔航