解决 flarum 0.1.0-beta.12 升级 beta.13 时 `__PHP_Incomplete_Class` 问题

我在树莓派上部署了一个 flarum 实例,用来进行官网论坛的相关开发。前阵子升级 beta.13 之后,无法打开网页,报错:

Argument 1 passed to Flarum\Formatter\Event\Rendering::__construct() must be an instance of s9e\TextFormatter\Renderer, instance of __PHP_Incomplete_Class given

这个错误很奇怪,尝试调试了一下未果。我厂的论坛比较特殊,之前从邮件列表导入了很多帖子,这些帖子的 html 很不规范,所以我们魔改 /vendor/s9e/text-formatter/src/Renderers/PHP.php,去掉了 XML 校验。我怀疑跟这个有关。因为当时很忙,就没有深入。

这个周末稍微有点时间,就尝试深入了解一下,发现了这个帖子:https://discuss.flarum.org/d/19235-argument-1-passed-to-must-be-an-instance-of

在我的实例上尝试了一下,果然是这个问题。flarum 会在实例的 /storage/cache/ 下生成类的缓存文件,用来加速程序运行。但不知为何,在我的实例下,这个文件的权限既不是当前用户也不是 www-data,所以执行 php flarum cache:clear 的时候删不掉它,但是也不报错。而打开页面时,因为缓存文件有问题,就会报前面提到的错误。

使用 sudo 删掉后实例恢复正常。

如果您觉得文章内容对您有用,不妨支持我创作更多有价值的分享:


已发布

分类

来自

标签:

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据