枝语风笺 - 技术分享
type: channel
link: https://blog.chario.cn/category/jsfx/
items: Typecho优化
items: 手持两把锟斤拷 口中疾呼烫烫烫 脚踏千朵屯屯屯 笑看万物锘锘锘
items: 1Panel 面板安装 PHP XLoader 扩展踩坑实录
items: 1Panel部署Halo容器反复重启问题解决

Typecho优化
type: item
date: 2026-05-30T18:12:00+08:00
description: 开启Gzip加速找到Typecho安装目录中的config.inc.php文件，添加下方代码即可/* 开启gzip压缩 */ ob_start('ob_gzhandler');nginx 没有 gzip 的站长，要记得 在 nginx 里面也开启gzip 压缩

手持两把锟斤拷 口中疾呼烫烫烫 脚踏千朵屯屯屯 笑看万物锘锘锘
type: item
date: 2026-05-20T22:08:00+08:00
description: 最近突然想起在学校学 c 的时候，某次课后作业的输出结果出现了一串烫烫烫🥲网上一搜发现这居然还有个顺口溜，好像也是编程中都会遇到的问题。聊聊原理锟[kūn]斤拷，http://baike.baidu.com/link?url=GCoDM7HBIV_JcJfXzIU9p1Rx7r8Ns2w6jVoZwnhn9ZizxhNG7egrUWojSETDzxb74uZFeVGIBK_qZYgNTo7So_)这一句在百度百科中可以查到，主要是因为在unicode编码转成GBK是出错的，因为并不是所有的字都能够用unicode表示，因此就会导致一些unicode无法比较的字默认填充一些字符，而unicode一般填充的是 \xef\xbf\xbd（UTF-8），而反复填充这些字符，就类似于这种形式：\xef\xbf\xbd\xef\xbf\xbd，而当使用GBK进行解析的时候，按照汉字占两个字节的规则，0xEFBF就对应“锟”， 0xBDEF对应“斤”，0xBFBD对应“拷”，所以就出现了这乱码了。烫烫烫 和 屯屯屯其实是一个原理，是我们在使用VC中文版的时候经常出现的问题，主要原因是我们使用了没有赋初值的局部变量，而VC中会对没有赋初值的部分自动填充一些初始字符， 一般填充 0xCC，两个连起来两个字节对应的就是“烫”，有些填充的是0xCD，相应的就是“屯”。锘锘锘 则是网页的乱码，也是编码问题，utf-8 与 GBK/gb2312

1Panel 面板安装 PHP XLoader 扩展踩坑实录
type: item
date: 2026-05-02T19:52:00+08:00
description: 最近把服务器上的站点从宝塔面板迁移到了1Panel 面板，原本运行正常的 API 站点直接报错，核心原因就是依赖的XLoader 扩展装不上，折腾了快一小时才搞定，特意记录下踩坑和解决过程，给同样迁移的朋友避坑。过程我的站点核心依赖 PHP 的 XLoader 扩展，宝塔面板里一键安装 XLoader 毫无压力，迁移到 1Panel 后，PHP 环境正常，但站点直接提示XLoader extension not loaded，第一步自然是去 1Panel 后台装扩展。1Panel 的 PHP 管理界面自带 XLoader 扩展选项，本以为一键安装就能解决，结果点了安装后：面板显示安装成功刷新 PHP 信息，XLoader 扩展压根没加载站点依旧报错，纯纯的无效安装这时候就放弃了面板一键安装，打算手动编译 / 上传 XLoader 文件安装，这也是第二个坑的开始。宝塔里手动装扩展的习惯是：下载对应 PHP 版本的 XLoader.so 文件上传到 PHP 扩展目录在 php.ini 里写绝对路径加载扩展我照着这个思路操作：下载了 PHP8.2 对应的 XLoader.so上传到目录：/opt/1panel/runtime/php/PHP82/extensions/no-debug-non-zts-20220829/在 php.ini 里添加配置：extension = /opt/1panel/runtime/php/PHP82/extensions/no-debug-non-zts-20220829/XLoader.so重载 PHP 配置后，直接报错：找不到该扩展文件 / 目录，反复检查路径、权限都没问题，就是加载失败。冷静下来想了想，宝塔是原生环境，1Panel 是容器化部署，这就是核心区别。容器化的 PHP，根本识别不了宿主机的绝对路径，它只会读取容器内的扩展默认目录。于是我打开 php.ini，翻了翻面板已经安装好的其他扩展（apcu、redis、memcached 等），写法全是这样：extension="apcu.so"extension="memcached.so"extension="redis.so"extension="imagick.so"extension="igbinary.so"没有任何绝对路径，只写扩展文件名 + 引号。照着其他扩展的格式，我把之前的绝对路径配置删掉，替换成一行：extension="XLoader.so"保存 php.ini，重载 PHP 配置，再刷新 PHP 信息，XLoader 扩展直接加载成功！站点瞬间恢复正常。总结放弃绝对路径：1Panel 的 PHP 是容器化环境，不要写宿主机的物理路径，容器识别不到标准写法：直接用 extension="扩展名.so"，和面板自带扩展保持一致文件位置：XLoader.so 必须上传到 PHP 的默认扩展目录（面板一键安装其他扩展的同级目录）避坑关键：从宝塔迁移过来，千万别用原生面板的操作习惯，容器化是最大的区别如果大家也遇到 1Panel 安装 XLoader / 其他自定义 PHP 扩展失败，优先检查配置写法，别再踩容器化路径的坑了！

1Panel部署Halo容器反复重启问题解决
type: item
date: 2026-05-02T12:11:00+08:00
description: 前言昨天打算把博客服务从宝塔面板迁移到 1Panel，想着用 1Penal 部署 Halo 2 能省心不少，结果刚启动就遭遇了噩梦：容器启动几秒就崩溃，反复重启。一开始以为是环境变量写错、权限不足、网络不通，甚至怀疑是服务器系统镜像有问题，硬生生重装了五六次系统。折腾了大半天，最后还是看了一眼日志，才发现问题的根源居然 Halo 的新版本强制使用SSL/TSL连接MySQL！问题现象1Panel 应用商店安装 MySQL 5.7，默认配置启动。商店安装Halo 2.24.2 ，并填写外部访问地址。安装完毕启动后，Halo 容器反复重启，日志一直在产生日志，我随便截取了一段anel-halo-1GwU | 20:09:35,786 |-WARN in c.q.l.core.rolling.SizeAndTimeBasedRollingPolicy@1099855928 - 'maxHistory' is not set, ignoring 'totalSizeCap' option with value [1 GB]1Panel-halo-1GwU |1Panel-halo-1GwU | __1Panel-halo-1GwU | / / / /___ / /__1Panel-halo-1GwU | / /_/ / `/ / 1Panel-halo-1GwU | / __ / /_/ / / /_/ /1Panel-halo-1GwU | /_/ /_/\__,_/_/\____/1Panel-halo-1GwU |1Panel-halo-1GwU | Version: 2.24.21Panel-halo-1GwU | 2026-05-01T20:09:35.848+08:00 INFO 1 --- [ main] run.halo.app.Application : Starting Application v2.24.2 using Java 21.0.10 with PID 1 (/application/application.jar started by root in /application)1Panel-halo-1GwU | 2026-05-01T20:09:35.851+08:00 INFO 1 --- [ main] run.halo.app.Application : No active profile set, falling back to 1 default profile: "default"1Panel-halo-1GwU | 2026-05-01T20:09:37.411+08:00 INFO 1 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode1Panel-halo-1GwU | 2026-05-01T20:09:37.412+08:00 INFO 1 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data R2DBC repositories in DEFAULT mode.1Panel-halo-1GwU | 2026-05-01T20:09:37.683+08:00 INFO 1 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 259 ms. Found 37 R2DBC repository interfaces.1Panel-halo-1GwU | 2026-05-01T20:09:37.710+08:00 INFO 1 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode1Panel-halo-1GwU | 2026-05-01T20:09:37.711+08:00 INFO 1 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAUL…