Xiuno BBS 插件开发踩坑记:编译缓存、伪静态与 utf8 截断

Xiuno BBS 二开资料少,坑都藏在细节里。本文记录我们做校园社区插件时踩过的 6 个坑:插件编译缓存不自动失效、伪静态规则写法、FPM 禁用 exec 函数、.user.ini 被锁定、卸载钩子的官方拼写,以及最隐蔽的 utf8 三字节截断问题。

Xiuno BBS 轻、快,但二开资料少,很多坑只能自己踩。我们给欣文校园做插件(App 下载页、单页站、App 接口层)的过程中,攒下这 6 条,按「坑度」从高到低排。

1. 改了没生效?先删编译缓存

Xiuno 的 _include() 会把插件文件编译缓存到 tmp/plugin_<id>_*,且没有 mtime 检查——改完 php/htm 不删缓存,改动永远不生效。九成「我明明改了」的问题都是它。要么手动删,要么部署脚本里固定加一步 rm tmp/plugin_<id>_*。

2. 伪静态规则:目标最后一段必须是路由名

nginx 里写 rewrite ^/x$ /index.php last; 是对的;写成带 query 形式(/index.php?r=xxx)就是错的。记住一条:rewrite 的目标最后一段必须是路由名。

3. FPM 禁了 exec 系函数

生产环境 PHP-FPM 通常封掉 exec / shell_exec / system。我们最初想在服务端用命令行工具画二维码,直接哑火——最后改成浏览器端用 jquery.qrcode 画,反而更快。

4. .user.ini 被 chattr 锁定

想改 .user.ini,先 chattr -i,改完记得 chattr +i 加回去。跳过这一步,要么改不动,要么改完忘了锁。

5. 卸载钩子的文件名是 unstall.php

不是 uninstall——官方就是这么拼的(少一个 l)。按「正确拼写」命名,卸载钩子永远不会执行。

6. 最隐蔽:utf8 三字节截断

当数据库 sql_mode 为空、表是 utf8(三字节)时,正文里出现 4 字节的 emoji,UPDATE 会静默截断该字段之后的所有内容——不报错、不告警,就是内容悄悄丢了。我们的处理:把涉及的表转 utf8mb4(站点 conf.php 的 charset 同步改),并把这条写进新插件的安装检查。如果站点出现过「内容莫名缺一截」,先怀疑它。

另外两条 CLI 相关的小经验:命令行造用户直接走 db_* 函数直插直删(model 钩子在 CLI 下不可用);CLI 跑完记得把站点新建的 root 属主日志文件 chown 回 www。

本内容观点仅代表作者本人观点立场,欣文网平台只做信息内容展示和存储。发布作者:欣文网,转载请注明出处:https://www.xinenw.com/57030.html

赞 (0)
WordPress 插件开发实战:从站群管理插件总结的 5 条工程经验
上一篇 2026年11月14日 12:36
我们为什么重做团队官网:技术选型与取舍
下一篇 2026年11月14日 12:36

相关推荐

  • 从 0 搭建 uni-app 多端项目的目录结构

    一套 uni-app 代码要同时跑在小程序和 App 上,目录结构直接决定后期改动成本。本文给出一套可落地的分层方案:按「变更频率」而非「文件类型」组织目录。

    2026年11月14日
    600
  • 我们为什么重做团队官网:技术选型与取舍

    官网重做常被当成一次视觉翻新,但对以内容运营为主的团队站而言,真正的难点在选型。本文复盘我们重做团队官网的动因,说明为何坚持「内容模型先行」的路线。

    2026年11月14日
    700
  • 小程序多端适配:微信/抖音/App 一套代码的坑

    uni-app 让「一套代码多端运行」成为可能,但真正做到差异可控,靠的不是写完就编译,而是把差异隔离干净。本文盘点微信、抖音小程序与 App 三端的关键差异及隔离做法。

    2026年11月14日
    400
  • WordPress 会员体系与支付接入实践

    会员与支付是内容站点从「展示」走向「经营」的两块基石。本文从边界划分入手,讨论 WordPress 场景下会员体系该自研还是选用成熟插件、支付接入的常见坑。

    2026年11月14日
    300
  • 社区产品的用户增长与留存设计

    社区产品的核心矛盾不是「拉新难」,而是「拉来的人不说话、说了话的人不再回来」。本文从冷启动、留存机制与指标口径三个方面展开,说明如何让第一批用户留下来。

    2026年11月14日
    300

发表回复

登录后才能评论

联系我们

在线咨询: 微信交谈

邮件A:xinenw@qq.com

邮箱B:xinenw@163.com

工作时间:周一至周五,8:30-23:30;周六周日10:30-18:30;节假日休息

关注微信