分类
flarum

解决 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 删掉后实例恢复正常。

分类
flarum

Flarum 添加导航并实现 i18n

Flarum 是一个开源论坛软件,基于 PHP Laravel 打造,外观很好看,功能也不错,一直想试一试。近期我厂要建社区,在我的强烈建议下,就选用了它。

Flarum 诞生很久了,现在的版本是 0.11.1-beta,还是测试版。官网也反复强调,不要把 flarum 用在生产环境,因为一切还不稳定。——这点从文档也能看出来,有些范例代码没法跑在最新版软件上。

换言之,坑比想象的多。经过将近两周断断续续的折腾,踏空很多次,完成了一些些小东西。接下来分享一下,也当给自己做笔记了。

分类
服务器端

解决 Raspberry Pi 4 安装 php-mbstring/php-curl 的问题

最近要在 flarum 上做二次开发,尝试直接用 php -S localhost:8080 未果,于是打算在树莓派上搭个开发环境,省得它整日落灰。

因为在本地创建过仓库,所以这次直接从 GitHub clone 项目下来,然后打算执行 composer install 安装依赖。结果提示差了 php-mbstring(解决汉字等多字节字符)和 php-curl(用于远程请求)两个模块。然后我就打算用 apt install php-curl 安装模块,没想到失败了,仔细看错误信息,因为这个模块依赖 libcurl3,但是系统里是 libcurl4,所以不行。

那就安装 libcurl3 呗,结果系统认为明显 libcurl4 更新,不给装 3,哪怕删了重装都不行。

后来查了半天,找到答案。原来我添加的源是 stretch 的,也就是面向 Debian 9 的;而 Raspberry Pi 的系统是基于 Debian 10,也就是 buster 的,所以依赖处理上,两方面就冲突了。

这个时候,需要用 sh -c 'echo "deb https://packages.sury.org/php/ buster main" > /etc/apt/sources.list.d/php.list' 把属于“buster”的源添加进系统,接着删掉之前 stretch 的源,然后 apt update 之后,就可以正常安装了。


参考链接:https://github.com/oerdnj/deb.sury.org/issues/1193