路没有尽头,折腾也没有。——绪深

2026 年 4 月 3 日建好这个博客之后,4 月 4 号又折腾了一整天。记录一下今天都干了什么,踩了哪些坑,以后翻出来看也算个参考。


起因

主题(Harmony Hues)出了新版,从 1.0.35 到 1.1.9,决定更新。结果主题一更新,之前改过的各种配置全都丢了——导航菜单死链、轮播图不工作、页面 Markdown 内容裸奔、页脚只剩下一个光秃秃的版权行。

于是开始了长达一整天的修复 + 优化。


踩坑记录

1. MySQL JSON 字段更新不能用 JSON_REPLACE

服务器 MySQL 5.5.62,不支持 JSON_REPLACE。最开始用 shell 拼 SQL 改 JSON 配置,引号嵌套到怀疑人生。

最终方案: 写 PHP 脚本,json_decode → 改目标字段 → json_encodeUPDATE,用 PDO prepared statements 处理转义,省心。

2. LOAD_FILE() 不可用

MySQL 的 secure_file_priv=NULL,不能从文件系统读文件。想通过 SQL 批量导入页面内容时踩了这个坑。

绕过方式: PHP 读文件 → 拼内容 → 写数据库。

3. Typecho 页面需要 <!--markdown--> 前缀

把页面内容写入数据库时,如果没有这个前缀,Markdown 符号会原样输出到页面上(## ** > 这种)。加上去就好了。

4. 主题更新会覆盖自定义配置

主题的更新是覆盖式的,之前改过的主题配置项(导航、轮播图、社交链接等)会被重置为默认值。所以下次更新之前,一定要先备份配置

5. 修改配置时先读再改,不要覆盖

这是一个非常重要的教训:改数据库里的配置,一定要先 SELECT 拿到当前值,只修改需要改的字段,再写回去。不要直接全量覆盖,否则之前保留的其他设置就全丢了。

6. footer.php 模板的逻辑坑

主题的页脚模板有个逻辑:当自定义页脚内容有值时,只输出自定义内容,不渲染主题切换和社交图标区。导致自定义了页脚文字后,GitHub 图标、暗色模式切换全不见了。

修复: 改了 footer 模板,让它不管有没有自定义内容都把社交和切换区渲染出来。


今天修了什么

项目状态
主题更新 1.0.35 → 1.1.9
导航菜单重复/死链修复
SSL 证书续签(到 2026-07-03)
全站页面 Markdown 渲染修复
隐私政策 / 版权协议 / 站点地图页面补全
页脚布局优化(版权 + 社交链接)
社交链接(GitHub + 邮箱 + RSS)
赞赏图替换
Nginx 伪静态规则修复
星际燃料(sitedate)校准
Favicon

站点目前状态:Typecho 1.3.0Harmony Hues 1.1.9,SSL 到 7 月 3 日,所有页面 200


学到的东西

  1. 修改前先备份——不管是数据库、配置文件还是整站。
  2. 增量更新优于全量覆盖——改 JSON 配置时 PATCH 而不是全量替换。
  3. 踩坑要记录——今天这些 shell 引号嵌套、MySQL 版本限制都是宝贵的踩坑经验。
  4. 折腾是学习的一部分——虽然花了一整天,但也把 Typecho、PHP、MySQL、Nginx、主题模板都摸得更熟了。

路没有尽头,下次折腾再说。