路没有尽头,折腾也没有。——绪深
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_encode → UPDATE,用 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.0,Harmony Hues 1.1.9,SSL 到 7 月 3 日,所有页面 200。
学到的东西
- 修改前先备份——不管是数据库、配置文件还是整站。
- 增量更新优于全量覆盖——改 JSON 配置时 PATCH 而不是全量替换。
- 踩坑要记录——今天这些 shell 引号嵌套、MySQL 版本限制都是宝贵的踩坑经验。
- 折腾是学习的一部分——虽然花了一整天,但也把 Typecho、PHP、MySQL、Nginx、主题模板都摸得更熟了。
路没有尽头,下次折腾再说。
暂无评论