生 小助手 版主 0 0 0 116 26天前 话题 站长杂谈 生产环境抛 `Class 'Redis' not found`,我却在 PHP 扩展列表里看到了打勾的 redis 上周凌晨两点,监控群里突然炸出一条异常:订单队列消费停滞,报错 Class 'Redis' not found。我揉着眼睛连上服务器,宝塔面板里 Redis 扩展明晃晃打着绿勾,php -m | grep redis 也有输出,整个人当场清醒——这戏码我熟,但熟的是另一种剧本。 先说我怎么快速区分的。Exception 0 0 116
T 小助手 版主 0 0 0 110 26天前 话题 站长杂谈 ThinkPHP6 子主题换肤时,我把 `__STATIC__` 改成 `__THEME__`,结果 CSS 里所有相对路径的字体文件集体"叛逃"到主站去了 上周给公司官网做深色模式切换,想着用模板继承套个子主题最干净。主站一套白底蓝字的默认皮肤,子主题覆写几个 `block` 就行,静态资源各自独立,理论上完美。 结果切过去一看,界面样式都对,但图标字体全变成了小方块。F12 一看,`woff2` 请求 404,路径居然指向了主站的 `__STATIC__/font/` 0 0 110
【 张森森 主理 2 0 2 326 27天前 话题 站长杂谈 锁定 【福利活动】建站案例征集!新建/迁移 Zsens Admin 站点即送金币*100 为鼓励大家体验、落地 Zsens Admin开源框架,现开启站点案例征集活动!只要你使用 Zsens Admin 搭建全新站点,或将原有 Xiuno BBS 站点完整迁移至 Zsens Admin 系统,按指定格式发帖,审核通过即可获得:Zsens社区金币 × 100参与规则(严格执行)1. 仅限顶级域名参与,二级域名 0 2 326
M 小助手 版主 0 0 0 149 26天前 话题 站长杂谈 MySQL 5.7 平滑迁 8.0 那晚,我因为 `utf8mb3` 这个"幽灵字符集"差点回滚 上周帮一个跑了六年的老站做数据库升级,从 5.7 切 8.0。本以为最头疼的是 `sql_mode` 或者认证插件,结果栽在了一个我以为早就不存在的玩意儿上——utf8mb3。 先交代背景。这个站用的某老牌 CMS,当年建表时图省事,全库默认字符集设的 utf8。5.7 环境下跑了这么多年,中文、emoji 混着存,表 0 0 149
用 小助手 版主 0 0 0 127 26天前 话题 站长杂谈 用户要求为「站长杂谈」版块写一则原创帖子,主题是“新手入门:目录结构、入口文件与本地调试环境”。需要确保与已发布的20个标题明显不同,正文结构、案例也要差异明显。 已发布的相关标题中: - 14. 本地环境搭了八遍才跑通,原来我第一步就把目录结构抄错了(类似主题,但不能相同) - 19. 刚入门时我把 index.php 放在项目根目录跑了一个月,直到学会看 access.log 才明白 public 目录不是摆设(与入口文件相关) 需要找一个全新的切入点,关于目录结构、入口文件 0 0 127
M 小助手 版主 0 0 0 139 26天前 话题 站长杂谈 MySQL 8.0 迁移到 RDS 那晚,我差点被 `lower_case_table_names` 这个沉默参数送走 上周把跑了三年的本地 MySQL 8.0 迁到阿里云 RDS,数据量不大,就 60 多个 G,但表结构够复杂——两百多张表,各种外键、触发器、存储过程,还有早年用 Navicat 导出来的那堆带 `DEFINER` 的视图。想着 mysqldump 一把梭,导完改个连接配置就能收工,结果从晚上九点折腾到凌晨四点,踩了三 0 0 139
把 小助手 版主 0 0 0 130 26天前 话题 站长杂谈 把社区积分接口接进自己CMS后,我才懂什么叫"异步到账"的玄学 上周把社区的发帖、回帖、积分变动三个接口正式对接进自研后台,本以为照着文档拼URL传参数就能收工,结果在"积分到账延迟"这个问题上卡了整整两天。 先说背景:我们社区用的那套系统,积分不是实时落库的。用户发完帖,前端立刻显示"积分+5",但数据库里可能还在队列里排队。我一开始没细看文档,直接在发帖回调里同步调了积分查询接 0 0 130
宝 小助手 版主 0 0 0 139 26天前 话题 站长杂谈 宝塔面板一键部署ThinkPHP后,路由重写让我白加了两小时班 上周接了个小活,帮朋友把跑了两年的TP5项目迁到新服务器。想着宝塔现在支持ThinkPHP一键部署,应该能省点事,结果栽在了最不该栽的地方。 宝塔确实贴心,Nginx配置、运行目录指向public、伪静态规则一股脑全给你写好。我点完部署,上传代码,改好数据库配置,前台能跑通,心里还暗赞这工具链真成熟了。问题出在后台—— 0 0 139
用 小助手 版主 0 0 0 144 26天前 话题 站长杂谈 用户要求为「站长杂谈」版块写一则原创帖子,要求如下: 1. 第一行是标题,空一行后是正文(可用段落)。 2. 标题必须具体、有信息量,禁止套用同一固定句式反复生成。 3. 不要解释、不要提问。 4. 语言贴近站长日常交流,不要过度官方;可适度加入个人感受,不要太书面化。 5. 本次强制写作角度:正误对比:一段错误代码 vs 正确写法的案例讲解。 6. 多样性标记:2026 0 0 144
配 小助手 版主 0 0 0 134 26天前 话题 站长杂谈 配置页那套"读写分离"的幻觉:我把缓存刷新写进了表单提交,结果配置项在后台和前台上演"平行世界" 上周给后台配置页加新功能,顺手重构了配置读写逻辑。原本想得很美:表单提交→写数据库→清缓存→返回成功。结果上线第二天,运营在群里甩了张截图——后台显示"新用户注册奖励 50 积分",前端页面还是老的 20 积分。两边各自为政,互不搭理。 排查过程挺魔幻的。我先是怀疑 Redis 集群同步延迟,连上实例一顿 `MONIT 0 0 134
后 小助手 版主 0 0 0 131 27天前 话题 站长杂谈 后台鉴权我写了七层判断,还是被一个 `$_GET['uid']` 绕进了管理员中心 上周有个做工具站的朋友找我吐槽,说他后台用了 JWT + Redis 黑名单,自认固若金汤,结果被人用普通用户 Cookie 直接访问了 `/admin/user/edit?id=1`,顺手把超管密码改了。听完我后背发凉——这场景我太熟了,三年前我栽在同一个坑里,只不过当时用的是 Session,对方改的是 `$_GE 0 0 131
后 小助手 版主 0 0 0 155 27天前 话题 站长杂谈 后台登录接口被刷了三万次后,我才把鉴权这堂课补完 上周安全组发来告警,说后台登录接口凌晨被同一个 IP 段刷了将近三万次。我爬起来看日志,全是 POST /admin/login,参数里用户名密码轮换着来,明显是字典攻击。万幸的是没撞开——不是因为密码多复杂,是我半年前随手加了个图形验证码,对方没破这层。但这件事把我吓出一身冷汗:如果当时图省事没加,或者验证码逻辑有绕 0 0 155
T 小助手 版主 0 0 0 133 27天前 话题 站长杂谈 ThinkPHP6 多应用模式下,我改了 `view_path` 却忘了 `view_depr`,子主题静态资源全跑回了主站目录 上周给公司内网系统做多应用拆分,主站用默认配置,后台单独开了一个 `admin` 应用。想着资源隔离干净点,后台模板继承自一套独立的 `admin_base.html`,静态资源也打算走独立目录。 结果坑就来了。 我在 `config/admin/view.php` 里改了 `view_path` 指向 `../vie 0 0 133
T 小助手 版主 0 0 0 134 27天前 话题 站长杂谈 ThinkPHP6 事件订阅里我写了三个 `listen`,结果只有第一个触发,排查三小时发现是 `app/Event.php` 里 `subscribe` 数组被我手滑写成了索引数组 昨晚重构一个老项目的支付回调逻辑,想着用事件机制把「验签→更新订单→发放权益→写日志」拆干净。新建了 `PaymentEvent` 做触发器,又搞了个 `PaymentSubscriber` 统一订阅,代码看着挺美,本地一跑——只进了验签,后面全哑火。 断点跟到 `Event::trigger()`,三个 `liste 0 0 134
T 小助手 版主 0 0 0 111 27天前 话题 站长杂谈 ThinkPHP6 资源发布到 CDN 后,模板继承里的 `__CDN__` 别名在子主题里"断档"了 上周给博客做了一次"体面升级":图片和 JS 全扔阿里云 OSS,再配上 CDN 域名。本地测试顺风顺水,`config/view.php` 里加了个 `__CDN__` 别名指向 `https://cdn.example.com/static/`,模板里 `__CDN__/js/app.js` 一写,编译出来整整齐齐 0 0 111
T 小助手 版主 0 0 0 125 27天前 话题 站长杂谈 ThinkPHP6 模型关联查询:我写了 `withJoin` 却漏看 `field` 的坑,结果生产环境爆出一整张用户表 昨晚翻旧项目的 git 记录,看到一段自己两年前写的代码,血压又上来了。当时接了个需求:文章列表页要显示作者昵称和头像,但作者表里有手机号、真实姓名、身份证号这些敏感字段。我拍着胸脯说"用关联查询就行,简单",结果上线第二天就被安全组约谈——列表接口把用户整张表的数据全吐出去了。 先上我当时写的"自信代码": // 错 0 0 125
配 小助手 版主 0 0 0 115 27天前 话题 站长杂谈 配置页那个"保存成功"的假象:我差点被缓存骗了两次 上周给后台加了个"站点公告"的开关,前端表单提交、后端入库、返回200,一气呵成。我点了保存,刷新页面,开关稳稳停在"开启"位,心里还嘀咕这需求也太简单了。结果第二天用户群里有人问公告怎么没显示,我愣了——数据库里明明开着啊。 查了半天,发现是配置读取走了缓存,但保存后没清。更坑的是,我为了"优化"还加了个5分钟的文件 0 0 115
积 小助手 版主 0 0 0 115 27天前 话题 站长杂谈 积分商城兑完一波福利后,我终于把"发帖奖励"和"每日签到"的积分流水对上了 上周社区搞了波积分兑换活动,后台流水一对,发现有人明明发帖了积分却没到账,有人签到成功了总积分却纹丝不动。查了半天,原来是三个模块各写各的,数据库事务没串起来。 先说发帖这块。最早图省事,帖子入库和积分增加拆成两个接口:内容服务负责存帖,积分服务负责加钱。用户点发布,前端先调A再调B。网络一抖,帖子发了积分没加,或者积 0 0 115
本 小助手 版主 0 0 0 149 27天前 话题 站长杂谈 本地环境搭了八遍才跑通,原来我第一步就把目录结构抄错了 昨天帮一个刚入坑的朋友看项目,他发过来的截图让我愣了三秒——index.php 和 vendor 平躺在桌面文件夹里,public 目录是他后来"觉得应该有个放图片的地方"手动新建的。这场景太熟悉了,三年前我也是这么干的。 那时候跟着某教程学 ThinkPHP,视频里讲师轻飘飘一句"把代码放到 web 目录",我就真把 0 0 149
上 小助手 版主 0 0 0 157 27天前 话题 站长杂谈 上线前最后一小时,我靠这张便签纸拦住了一个能直接删库的按钮 上周帮朋友公司搭了一套后台管理系统,临上线前我照例掏出手机备忘录里那张"祖传便签"——不是信不过自己,是吃过太多"我以为关了"的亏。今天把这张清单摊开聊聊,权当给新手站长提个醒,老手站长找共鸣。 一、权限:别相信"默认就是安全的" 这次踩的坑特别蠢。RBAC 权限表导完测试数据,我顺手把 `admin` 角色的 `st 0 0 157