标签: Yii 2.0
-
本文记录了解决 Yii 2.0 报错 yii\base\ErrorException: Undefined index: HTTP_ACCEPT 的过程。通过查看运行时日志发现,当 User-Agent 为 okhttp/3.12.0 时,$_SERVER 数组中不存在 HTTP_ACCEPT 索引。解决方法是要求 Android 客户端在 Headers 中明确声明 Accept 参数,或者在服务端代码中增加判断,当该索引不存在时不直接使用,从而消除错误。
-
在基于 Yii 2.0 上传 .jpg 文件时,尽管允许的扩展名列表中已包含 jpg,上传仍被拒绝。通过调试 FileValidator.php 发现,系统默认开启的 checkExtensionByMimeType 功能通过 MIME 类型校验扩展名,但判定结果不匹配,导致文件无效。最终将文件扩展名改为 png 后上传成功,确认问题源于 MIME 类型与扩展名的校验机制。
-
本文介绍了在 Yii 2.0 生产环境中开启 Schema 缓存以优化性能的操作,包括修改配置文件、验证 Redis 缓存生成及手动清理缓存的命令。测试发现清除 Schema 缓存后并非立即刷新数据,而是在下次调用相关表结构时触发更新。文章还说明了在 Docker 容器部署和 Rancher 升级时执行数据库迁移与清理命令的流程。性能测试对比显示,开启缓存后接口并发峰值反而略有下降,因此决定暂时保留该配置不回退。
-
针对 Yii 2.0 中企鹅号任务发布后入库失败无法查询记录的问题,文章放弃了客户端冗余存储方案,采用新建预发布日志表并增大字段长度的设计。通过创建继承 ActionFilter 的过滤器,在动作执行后根据返回码非 10000 时插入记录,并利用 UNION ALL 语法合并查询结果,成功实现了入库成功与失败皆可查询的功能。
-
文章针对 Yii 2.0 默认不支持 MySQL 的 MEDIUMTEXT 等字段类型的问题,通过参考 SchemaBuilderTrait.php 源码,在控制台目录下新建自定义 Trait 文件并添加相应类型支持。操作过程包括复制核心文件、实现扩展方法以及在迁移文件中引用该 Trait。执行迁移后,成功创建了包含 MEDIUMTEXT 类型字段的数据库表,经验证字段类型符合预期。
-
针对在 Yii 2.0 框架中添加 .docx 扩展名后仍无法上传的问题,分析发现其根本原因是 PHP 的 Fileinfo 函数将 .docx 文件识别为 application/zip,导致框架在基于 MIME 类型校验扩展名时判定不匹配。文章记录了通过调试跟踪核心代码找到原因的过程,最终的解决方案是新建类继承 FileValidator 并覆写验证方法,同时在验证规则中补充对应的 MIME 类型列表,成功实现了 Office 2007 格式文档的合法上传。
-
本文介绍了在 Yii 2.0 中实现租户任务类型与步骤设置的编辑与更新功能,解决用户需自主添加任务类型并从步骤中选择的问题。通过数据库迁移调整表结构,利用默认记录与租户自定义记录区分逻辑,编写了控制器、服务层与模型代码。经过 Postman 测试验证了数据读取、新增、删除及排序的正确性,最终 SQL 分析确认索引合理,满足多租户场景下树形结构数据的配置需求。
