PHP 7.1 分类归档 - 永夜 https://www.shuijingwanwq.com/category/programming-language/php/php-7-1/ 没有不值得去解决的问题,也没有不值得去学习的技术! Mon, 10 Aug 2026 14:24:19 +0000 zh-Hans hourly 1 https://wordpress.org/?v=7.1.3 https://media.shuijingwanwq.com/2026/05/logo-150x150.png PHP 7.1 分类归档 - 永夜 https://www.shuijingwanwq.com/category/programming-language/php/php-7-1/ 32 32 在 Rancher 容器升级后,基于环境变量的配置,自动运行应用初始化命令与数据库迁移命令 https://www.shuijingwanwq.com/2019/01/23/3117/ Wed, 23 Jan 2019 03:20:39 +0000 http://www.shuijingwanwq.com/?p=3117 本文针对 Rancher 容器升级后需手动执行初始化与数据库迁移命令的问题,通过编写 SHELL 脚本实现了基于环境变量的自动化运行。脚本根据 PCS_API_CFG_ENV 和 PCS_API_CFG_MIGRATE 等环境变量的值,自动执行应用初始化或数据库迁移操作,同时设置了默认值与错误提示。针对执行顺序导致的命令报错,通过重命名脚本文件确保在配置文件加载后运行。最终测试表明,该方案成功实现了容器升级后的自动化初始化与迁移。

在 Rancher 容器升级后,基于环境变量的配置,自动运行应用初始化命令与数据库迁移命令最先出现在永夜。

]]>
在 Yii 2 中,基于 SAM-IT/yii2-urlsigner 实现安全的 URL 签名和验证 https://www.shuijingwanwq.com/2019/01/21/3108/ Mon, 21 Jan 2019 06:42:34 +0000 http://www.shuijingwanwq.com/?p=3108 针对微博微连接网页应用授权接口允许游客访问导致的安全风险,文章介绍了基于 Yii 2 框架使用 SAM-IT/yii2-urlsigner 插件实现 URL 签名与验证的过程。通过 Composer 安装插件并配置控制器和操作,实现了对 URL 参数篡改、签名缺失及超时的拦截。为解决签名在有效期内可重复使用的问题,作者进一步引入 Redis 存储 HMAC 签名并创建自定义过滤器,成功确保了签名的一次性有效性。

在 Yii 2 中,基于 SAM-IT/yii2-urlsigner 实现安全的 URL 签名和验证最先出现在永夜。

]]>
在 PHP 中,报错:”Class ‘weibo\\rests\\oauth2\\DateTime’ not found” 的分析与解决 https://www.shuijingwanwq.com/2019/01/18/3106/ Fri, 18 Jan 2019 09:55:56 +0000 http://www.shuijingwanwq.com/?p=3106 在 Yii 2 开发环境中遇到报错 Class 'weibo\\rests\\oauth2\\DateTime' not found,经分析该问题由命名空间机制引起。由于代码处于特定命名空间内,解释器尝试在当前空间查找 DateTime 类从而导致找不到定义。解决方法是在使用该类名前添加前导反斜杠,强制指向全局命名空间,即可成功加载并修复此报错。

在 PHP 中,报错:”Class ‘weibo\\rests\\oauth2\\DateTime’ not found” 的分析与解决最先出现在永夜。

]]>
在 Yii 2 高级项目模板中,实现 RESTFUL WEB 服务时,消息目录(messages)中配置的最佳实践 https://www.shuijingwanwq.com/2019/01/17/3104/ Thu, 17 Jan 2019 02:54:25 +0000 http://www.shuijingwanwq.com/?p=3104 本文探讨了在Yii 2高级项目模板中实现RESTful Web服务时消息目录配置的最佳实践。针对原有实现中翻译类别冗余及消息位置混淆的问题,作者通过调整i18n组件配置并优化消息文件的加载逻辑,实现了使用统一的调用方式。最终方案在简化Yii::t()方法调用的同时,妥善解决了公共目录与接口应用中同名翻译码的覆盖与合并问题。

在 Yii 2 高级项目模板中,实现 RESTFUL WEB 服务时,消息目录(messages)中配置的最佳实践最先出现在永夜。

]]>
在 Yii 2 中,当输入数据是通过网址时,为了避免执行冗余的更新SQL,给输入值应用一个过滤器(intval),进而导致衍生出的验证规则失效的分析解决 https://www.shuijingwanwq.com/2018/12/29/3082/ Sat, 29 Dec 2018 10:38:33 +0000 http://www.shuijingwanwq.com/?p=3082 本文探讨了在 Yii 2 中处理网址参数时,为避免因类型差异导致执行冗余更新 SQL,应用 intval 过滤器引发验证规则失效的问题。分析发现,空字符串被强制转换为 0 导致规则误判。通过调整验证器顺序并将 filter 的 skipOnEmpty 属性设为 true,仅在输入非空时进行类型转换,确保验证规则正常工作且数据符合预期。

在 Yii 2 中,当输入数据是通过网址时,为了避免执行冗余的更新SQL,给输入值应用一个过滤器(intval),进而导致衍生出的验证规则失效的分析解决最先出现在永夜。

]]>
在 Yii 2 高级模板中,渠道发布接口(发布同一篇文章至企鹅号、微信公众帐号等渠道)的架构设计,基于队列、控制台命令推动工作流程 https://www.shuijingwanwq.com/2018/12/05/3044/ Wed, 05 Dec 2018 09:58:48 +0000 http://www.shuijingwanwq.com/?p=3044 本文介绍了在 Yii 2 高级模板中设计渠道发布接口的架构,旨在实现文章同步至企鹅号等渠道。通过复制应用调整配置、配置 Nginx 单域名路由,基于队列扩展和控制台命令推动工作流程。详细阐述了资源复制、文件上传、文章发布及来源回调等队列任务与事件处理器的实现,并进行了失败重试与状态更新测试。测试结果验证了该架构能有效处理视频发布流程,确保任务在异步执行中达成最终一致性。

在 Yii 2 高级模板中,渠道发布接口(发布同一篇文章至企鹅号、微信公众帐号等渠道)的架构设计,基于队列、控制台命令推动工作流程最先出现在永夜。

]]>
在 Yii 2 高级模板中,在 CentOS 7.2 中执行初始化命令,一些应用下的目录权限未设置为 777 的分析解决(根源在于 Docker 部署配置问题) https://www.shuijingwanwq.com/2018/11/23/3027/ Fri, 23 Nov 2018 09:15:13 +0000 http://www.shuijingwanwq.com/?p=3027 在 Windows 10 中执行 Yii 2 高级模板初始化命令设置目录权限正常,而在 CentOS 7.2 中执行时部分应用目录权限未被设置。排查发现 Docker 部署将文件拷贝至系统根目录时,environments 目录下的 index.php 文件缺少相应目录配置。将该文件复制至指定路径并重新升级后,再次执行初始化命令,各应用目录权限均正确设置为 777,问题得到解决。

在 Yii 2 高级模板中,在 CentOS 7.2 中执行初始化命令,一些应用下的目录权限未设置为 777 的分析解决(根源在于 Docker 部署配置问题)最先出现在永夜。

]]>
在 Yii 2 中基于 yii\db\ActiveQuery::joinWith() 关联声明查询数据,响应字段类型为字符串的分析解决 https://www.shuijingwanwq.com/2018/11/21/3022/ Wed, 21 Nov 2018 01:48:22 +0000 http://www.shuijingwanwq.com/?p=3022 针对 Yii 2 框架中使用 yii\db\ActiveQuery::joinWith() 进行关联查询时,响应字段类型全部变为字符串的问题,通过检查 Serializer 和 Action 代码发现原因在于使用了 asArray() 方法。删除该方法并直接返回模型对象后,响应字段类型恢复为与数据库一致,成功解决了字段类型异常的情况。

在 Yii 2 中基于 yii\db\ActiveQuery::joinWith() 关联声明查询数据,响应字段类型为字符串的分析解决最先出现在永夜。

]]>
在 Yii 2 中,更新模型时,当某字段不存在时,不更新模型(默认实现),当某字段存在,其值为空(赋值为属性的旧值)时,不更新模型的实现 https://www.shuijingwanwq.com/2018/11/20/3018/ Tue, 20 Nov 2018 02:03:24 +0000 http://www.shuijingwanwq.com/?p=3018 针对在 Yii 2 中更新模型时遇到字段值为空导致验证失败的问题,文章探讨了当某字段存在但其值为空时跳过验证且不更新该字段的实现方法。通过编辑验证规则,实现了在空字符串状态下不执行验证,确保 SQL 语句符合预期未更新该字段值,最终成功处理了模型更新逻辑。

在 Yii 2 中,更新模型时,当某字段不存在时,不更新模型(默认实现),当某字段存在,其值为空(赋值为属性的旧值)时,不更新模型的实现最先出现在永夜。

]]>
基于企鹅号的视频文件分片上传的实现流程,包含队列、文件切片、while 循环等 https://www.shuijingwanwq.com/2018/11/19/3013/ Mon, 19 Nov 2018 01:54:03 +0000 http://www.shuijingwanwq.com/?p=3013 本文介绍了基于企鹅号的视频文件分片上传实现流程。文章首先设计了包含资源表、分片上传表和事务表的数据库结构,接着阐述了利用队列处理资源复制与上传的逻辑。核心操作在于通过 AssetService 将视频文件按 100M 大小进行切片,并由 QqCwVideoMultipartUploadService 处理 HTTP 请求上传。最终验证显示,切片文件生成正确且能够成功上传至企鹅号后台,实现了大文件的可靠传输。

基于企鹅号的视频文件分片上传的实现流程,包含队列、文件切片、while 循环等最先出现在永夜。

]]>