解决 Typecho 无法启用插件

0、前言

Typecho 系统精简,适当配置插件可以为 Typecho 赋能 注入灵魂。

前段时间腾讯云 COS 封禁了我博客的一张图,经过排查发现应该是丁真表情包里面的某一张图,然而资源被封禁后无法查看,因此具体是哪张不得而知。

猜测应该是“易摇丁真:蒸馍,你不扶器吗?”,因为这张图是 2022 年上传的,时隔 1 年才被封禁,并且被封禁的时候恰好某件大事发生,官方回应并不让民众信服,可能有人在官号评论区刷这张图,导致它被全网封禁,各大平台自查存量数据是否存在此图。

言归正传,总之我因此把博客图床服务迁移到 BackBlaze,之后将会出一篇迁移教程,敬请期待。

1、问题描述

正确下载、解压插件到 Typecho 的/usr/plugins/目录,在后台点击启用插件,提示500,报错只有一句“无法启用插件”。

2、问题排查

想看解决方案的可以直接跳过,因为这个问题的原因非常弱智,我居然排查了一个小时 XD

以下是排查 Typecho 插件/主题问题的较好步骤,如果你遇到了 Typecho 的问题可以参考下列步骤排查问题。

2.1、调试模式

首先启用 Typecho 强大的调试模式,在config.inc.php中加入一行:

PHP
1
2
//开启测试模式
define('__TYPECHO_DEBUG__', TRUE);

然而依然是相同的报错,Stack Trace 也是无用的内容。

2.2、检查兼容性

切换 PHP7/PHP8,问题仍然存在;

目前我见过的 PHP 版本兼容性问题似乎大部分都是 PHP5 及以下PHP7 及以上 两个版本间的问题,唯一见过 PHP8 不兼容的 PHP7 程序就是 Typecho 1.1 版本,Markdown 解析引擎里使用 $array{i}(而不是$array[i])来表示数组元素,这种方式已被 PHP8 取消支持。

检查发现里面的程序使用的是 Typecho 旧版写法,例如:

PHP
1
2
3
4
class B2File_Plugin implements Typecho_Plugin_Interface
{
    ...
}

尝试替换为新版写法:

PHP
1
2
3
4
5
6
namespace TypechoPlugin\B2File;
...
class Plugin implements PluginInterface
{
    ...
}

仍然无法使用。

事实证明这两种写法 Typecho 1.2 都兼容,看来 Typecho 的前向兼容性做的很好。不过本站模板迁移到 Typecho 1.2 时出现了严重问题,当时捣鼓了 3 天才彻底解决,代价是抛弃了模板自带的配置备份功能,这个功能的实现方法不兼容新版,导致后台模板配置页面根本进不去(虽然说我没有使用过这个功能,去除这个功能完全没有影响 XD)。

3、解决方法

尝试在 Google 搜索无果后发现有人遇到过类似问题,重命名项目文件夹后就可以解决。

尝试把插件文件夹改名为B2File,重新启用,成功。

4、错误原因

不只是此插件可以用这种方法解决,如果启用插件报错“无法启用”都可以尝试排查是否是文件夹名问题。

正确文件夹名可以通过以下方法获得:

查看Plugin.php中的类名(或者命名空间名),例如:

PHP
1
2
3
4
5
6
7
// 使用类(旧版写法)
class B2File_Plugin implements Typecho_Plugin_Interface
// 这里的 B2File 就是正确名称

// 使用命名空间
namespace TypechoPlugin\cosUploadV5;
// 这里的 cosUploadV5 就是正确名称

一般而言,如果直接从 GitHub 拉取,那么项目文件夹会是Typecho-*或者typecho-plugin-*,因此拉取后改文件夹名是个好习惯。

也有一部分插件对文件夹名不敏感,似乎是因为不需要把插件函数绑定到 Typecho 系统功能上。

如果需要,则会将组件注册到 Typecho 系统,这样一来 Typecho 就需要调用对应文件夹中的 Action.php等函数,如果文件夹名不对自然就会报错了。

解决 Typecho 无法启用插件

https://blog.tsinbei.com/tw/archives/1444/

文章作者
Hsukqi Lee
发布于

2023-11-16

修改于

2023-11-16

许可协议

CC BY-NC-ND 4.0

评论

昵称
邮箱
网址
1 条

IhaveBB

IhaveBB

感谢大佬!我也是排查了半天,一开始切换文件名Typecho-B2File和Backblaze-B2 File也不行,全网搜了半天都没找到详细教程,没想到搜typecho 无法启用插件,竟然搜到了。
感謝大佬!我也是排查了半天,一開始切換文件名Typecho-B2File和Backblaze-B2 File也不行,全網搜了半天都沒找到詳細教程,沒想到搜typecho 無法啟用插件,竟然搜到了。

  回复

Hsukqi Lee

Hsukqi Lee 作者

繁体字?老乡?

  回复