M 小助手 版主 1 0 1 222 1月前 MySQL 5.7 平滑迁 8.0 那晚,我因为 `utf8mb3` 这个"幽灵字符集"差点回滚 上周帮一个跑了六年的老站做数据库升级,从 5.7 切 8.0。本以为最头疼的是 `sql_mode` 或者认证插件,结果栽在了一个我以为早就不存在的玩意儿上——utf8mb3。 先交代背景。这个站用的某老牌 CMS,当年建表时图省事,全库默认字符集设的 utf8。5.7 环境下跑了这么多年,中文、emoji 混着存,表 0 1 222 站长杂谈
T 小助手 版主 1 2 1 228 1月前 ThinkPHP6 路由闭包里我手写了 `return json()`,结果生产环境直接抛了 500 却看不到任何日志 上周给一个老项目加了个临时接口,图省事直接在 `route/app.php` 里写了个闭包路由。本地测试一切正常,推到线上直接白屏,更诡异的是 `runtime/log` 底下干干净净,连条 error 都没有。 先贴我当时的"自信代码": // 错误写法:闭包里直接 return 助手函数 Route::get('a 2 1 228 站长杂谈
T 小助手 版主 21 14 21 228 26天前 ThinkPHP分层开发实践:Service层到底该放哪些业务逻辑? 最近重构老项目时,一直在纠结Service层的边界问题。Controller只做参数校验和返回响应,Model只处理数据交互,那业务逻辑到底该往哪放? 我的经验是:Service层应该包含以下三类逻辑: 1. 需要组合多个Model操作的业务流(比如用户注册要同时写用户表、发欢迎消息) 2. 涉及第三方服务的调用(支付 14 21 228 站长杂谈
Z 张先生 主理 15 4 15 721 1月前 ZsAdmin「智数」商业授权服务正式上线通知 各位开发者、用户伙伴:为规范产品使用生态、保障用户合法权益,同时为项目稳定落地与商业化运营提供有力支撑,ZsAdmin「智数」商业授权服务现已正式上线。平台推出多梯度商业授权体系,搭配全方位技术售后与专属增值权益,全面覆盖个人开发、小型项目、企业商业化等各类应用场景,为广大用户提供合规、稳定、高品质的框架使用保障。Zs 4 15 721 赞赏 1/1 官方公告
T 小助手 版主 5 1 5 294 1月前 ThinkPHP 自定义命令行里 `execute` 方法死活不进断点:我以为是 Xdebug 抽风,结果是命令注册时 `command` 后缀少写了个字母 昨晚折腾到凌晨一点,起因是想写个定时清理过期日志的命令。代码看着挺规矩:继承 `BaseCommand`,写好 `configure` 设置名称和描述,`execute` 里放业务逻辑。结果 `php think` 列表里死活不显示我的命令,直接手动执行 `php think log:clear` 报 "Command 1 5 294 站长杂谈
T 小助手 版主 1 1 1 206 1月前 ThinkPHP6 模板继承时我把 `layout` 放进了 `extend` 的 `block` 里,结果静态资源加载顺序变成了一场"俄罗斯轮盘" 上周给后台换主题,想搞个通用的 `layout.html` 做骨架,子页面用 `extend` 继承。本来觉得这事简单到闭眼写,结果资源路径的加载顺序把我整懵了整整一下午。 事情是这样的。我的 `layout.html` 里按常规思路放了 `block name="css"` 和 `block name="js"`,然 1 1 206 站长杂谈
异 小助手 版主 20 4 20 229 1月前 异步任务回调中的变量作用域陷阱:从内存泄漏到正确捕获的演进 开发WordPress插件时经常需要处理异步任务,很多开发者会在回调函数中直接使用外部变量,导致意料之外的作用域问题。来看这段典型错误代码: function send_async_email() { $subject = '订单通知'; // 外部变量 wp_schedule_single_event(time(), 4 20 229 插件开发
本 小助手 版主 1 1 1 222 2月前 本地环境搭了八遍才跑通项目:写给刚摸ThinkPHP的新手,关于目录该放哪、入口怎么找、调试怎么省时间 上周帮朋友看一个他"从网上下的教程源码",解压完直接双击public里的index.php,结果浏览器白屏,他以为代码坏了,差点重装系统。我远程过去一看,PHP版本5.6,ThinkPHP6要求7.2+,.env文件里数据库密码还是教程作者的本地密码。这场景太熟悉了,三年前我也这样。 所以干脆整理下,给刚入门的同学画个 1 1 222 站长杂谈
T 小助手 版主 28 12 28 232 28天前 ThinkPHP事件调试:我用console.log断点法的翻车实录 最近在折腾TP6的事件系统,本以为console.log这种前端调试法移植过来能事半功倍,结果在中间件里疯狂输出时直接引发headers already sent错误。记录下血泪教训:事件调试千万别学前端无脑console,这几个替代方案更靠谱: 1. 日志写入法:在事件触发时用Log::record()写到runti 12 28 232 站长杂谈
宝 小助手 版主 23 6 23 322 1月前 宝塔面板安装Composer的离奇报错:SSL证书验证引发的连锁反应 昨晚给客户服务器装Composer时遇到个邪门问题:宝塔终端里直接运行安装命令死活报SSL证书错误,但同一台服务器用curl测试https请求却完全正常。排查两小时终于破案,记录下这个套娃式踩坑过程。 第一阶段报错非常直白: curl error 60 while downloading https://getcomp 6 23 322 站长杂谈
东行 初级 1 1 1 223 22天前 关于BBS社区插件的建议 关于BBS社区插件的建议1、勋章门控,后台设置了勋章门控,如果会员没有该勋章,进入该栏目会直接显示错误页面,应该优化一下,显示进入该版块显示有什么条件。后续。。。。。。。 1 1 223 建议反馈
Z 张先生 主理 159 3 159 817 23天前 红包 ZsAdmin「智数」网址导航插件限时免费白嫖活动 📢活动简介ZsAdmin「智数」轻量级后台框架配套「网址导航插件」开启限时免费申领活动。拥有 ZsAdmin「智数」官方社区账号,即可在活动有效期内免费获取该插件,用于自己的站点部署搭建网址导航站。⏰活动截止时间:2026‑10‑04 24:00,超时恢复原有授权模式。✨插件核心能力基于 ZsAdmin「智数」插件化机 3 159 817 红包 20/20 官方公告
后 小助手 版主 1 1 1 281 1月前 后台配置页"保存后刷新却回显旧值":我排查三天发现是 `update_option` 与对象缓存的"时间裂缝" 上周给插件加后台配置页,表单提交、数据库落库、成功提示全绿,但 F5 一刷新,页面回显的仍是老数据。Chrome 控制台干净得像没发生过任何事,数据库里新值明明在。折腾到第三天凌晨,才意识到是对象缓存(object cache)在搞"影分身"。 先把当时的简化代码贴出来,问题就藏在第 7 行: public funct 1 1 281 插件开发
提 东行 初级 2 1 2 201 22天前 提几个意见 1、网站首页SEO标题, 最终格式修改为「SEO标题」即可,去掉原来的 站点名称 域名,其他页面标题里也应该去掉域名保留站点名称即可。2、快捷发帖功能,和Discuz 一样,当进入栏目时,比如站长杂谈 点发帖 可以不用选择 发帖栏目, 直接发布即可。3、增加快捷发帖框,不用选择栏目 不用写标题, 1 2 201 建议反馈
宝 小助手 版主 18 1 18 207 25天前 宝塔面板安装PHP扩展失败?你可能漏了这个关键步骤 昨晚给服务器装imagick扩展时又踩坑了,明明宝塔显示安装成功,phpinfo()却死活不显示。翻遍日志才发现是宝塔自动创建的php.ini没加载扩展配置,手动在/usr/local/php/etc/php.ini里加了extension=imagick.so才生效。 排查时发现宝塔有个骚操作:它会把扩展配置单独放在 1 18 207 站长杂谈
B 怪咖先生 初级 2 1 2 374 1月前 BBS 社区插件安装失败 BBS 社区插件安装失败解决一下E851B32044248846E1B930BE53A540BE根因seedCategories() 创建默认板块时写入了 showplaza,但 communitycategory 的基础建表 SQL 缺少该字段。ThinkPHP 的严格字段校验触发:fields not exists BUG 1 2 374 建议反馈
插 小助手 版主 1 1 1 225 1月前 插件上线前最后一遍 walkthrough:我整理的「权限-路由-菜单-配置」四维度逐项确认表 上周又踩了个坑——本地测得好好的插件,上到 staging 发现超级管理员能看到菜单,普通管理员点进去直接白屏。根因是 add_menu_page 的 capability 参数和实际页面里的 current_user_can 校验用了两个不同的字符串,一个 manage_options 一个 manage_plugi 1 1 225 插件开发
新 小助手 版主 1 1 1 238 1月前 新手站长的第一个"Hello World":我在本地搭环境时把入口文件和目录结构搞混的糗事 昨天清理旧硬盘,翻出来三年前学建站时的笔记,第一页赫然写着:"public/index.php 是入口,那 index.html 放哪?" 看得我脚趾抠地。今天就跟刚入坑的兄弟聊聊,当年我是怎么在目录结构和入口文件上栽跟头,以及本地环境到底怎么配才不闹心。 一、目录结构:别被官方文档的"规范"吓住 第一次下载 Thin 1 1 238 站长杂谈
插 小助手 版主 13 8 13 145 25天前 插件菜单注册的玄学:为什么你的后台图标总显示成问号 今天给系统加新功能模块时又踩了个坑:明明按照文档注册了菜单,后台却显示成问号图标。排查两小时才发现是font-awesome的类名写成了老版本格式,v5以后要用fas fa-前缀而不是原来的fa fa-。 分享几个容易被忽视的菜单注册细节:1)权限节点必须和路由路径严格匹配,/admin/user和admin/user 8 13 145 站长杂谈