给 Codex 的指令如下,已经在执行中了:
继续维护项目 `shuijingwan/oneinstack-custom`。
## 本轮任务
PHP 8.5 补丁升级前置开发:**生产环境配置参数自动迁移**。
本轮允许修改本地仓库代码、增加测试,但禁止修改生产服务器。
### 一、背景
1. `ssh aliyun`:WordPress 生产环境,当前 PHP 8.5.9 ,PHP-FPM 正常运行。
2. `ssh zgocloud`:未发现 PHP 安装,不在本轮范围。
3. PHP 官方计划于 2026-10-21 发布紧急安全修复版本,具体目标版本暂未确定。
4. 此前 PHP 8.1.19 → 8.5.9 的迁移已经成功,相关定制构建逻辑经过生产验证。
5. 生产环境中的 PHP-FPM 、OPcache 等配置经过单独审计和调优,可能与仓库默认参数不同。
参考资料:
-
https://www.shuijingwanwq.com/2026/08/04/22298/-
https://www.shuijingwanwq.com/2026/08/06/23342/-
https://www.shuijingwanwq.com/2026/08/07/23670/-
https://www.shuijingwanwq.com/2026/08/16/26028/博客仅作历史参考,实际配置以当前服务器只读检查结果为准。
### 二、已经确定的设计原则
**统一采用“新版配置文件 + 生产参数自动迁移”方案。**
具体要求:
1. 以目标 PHP 版本的官方配置模板为基础。
2. 保留 OneinStack 必需的部署配置。
3. 自动识别和迁移当前生产环境明确设置过的参数。
4. 直接修改新版对应配置文件。
5. PHP 主配置、PHP-FPM 全局配置和进程池配置采用统一的迁移策略。
6. 不直接复制旧版本整份配置文件。
7. 不新增 `99-production.ini` 或类似生产覆盖层。
8. 允许沿用仓库原有的扩展配置文件结构。
9. 不能静默丢弃未知、冲突、已删除或不兼容的配置项。
10. 迁移完成后必须能够检查关键参数是否遗漏或发生变化。
特别注意:
- 不要将旧版本所有运行时默认值迁移到新版本。
- 不要将历史博客中的参数硬编码为生产配置。
- 不能仅通过比较旧配置文件与新版模板来推断全部人为调优意图;需要区分明确设置值、部署必需值和默认值。
- 对无法可靠判断的参数,报告异常并停止自动应用,不猜测。
### 三、先进行代码和生产配置审计
首先检查 `git status`,存在冲突性未提交修改时停止,不覆盖现有工作。
重点阅读:
- `
install.sh`
- `
upgrade.sh`
- `include/
php-8.5.sh`
- `include/
upgrade_php.sh`
- `versions.txt`
- PHP 扩展安装及配置生成相关代码
- PHP-FPM 和 systemd 相关配置模板
允许使用 `ssh aliyun` 执行必要的只读检查,确定:
- 当前 PHP 配置加载路径。
- `php.ini` 及额外扫描目录。
- PHP-FPM 全局与进程池配置。
- OPcache 配置及实际生效值。
- 动态扩展及其配置。
- systemd 服务启动参数。
- 自定义生产配置与仓库默认配置的差异。
禁止在服务器执行写入、安装、更新、停止服务、重启或配置替换。
不要读取或输出密码、密钥等敏感信息。只保存任务必要的脱敏证据。
### 四、实现范围
审计后,优先实现最小可维护的 PHP 8.5 配置迁移能力。
要求:
1. 复用现有 PHP 8.5 构建逻辑,不复制一套新的构建实现。
2. 保留首次安装的现有行为。
3. 为未来同分支补丁升级提供配置迁移能力。
4. 迁移范围覆盖 PHP 、OPcache 、PHP-FPM 全局配置和进程池配置。
5. 保留现有 Socket 、用户权限、服务路径等部署必需参数。
6. 处理重复参数、注释、配置段、加载顺序及覆盖关系。
7. 对动态扩展进行兼容性检查,不能直接假设旧 `.so` 可复用。
8. 在正式切换 PHP-FPM 之前完成配置生成与验证。
9. 迁移失败时不得破坏原有配置,也不能报告成功。
10. 不影响其他 PHP 分支。
可以使用已发布的 PHP 8.5.11 作为本地测试目标,但不要将其直接认定为本次安全漏洞的最终修复版本。
如果发现该功能需要复杂重构,应停止扩大实现范围,说明原因并提供最小可行方案。
### 五、验证要求
使用本地临时目录和测试 fixture ,不连接生产服务器执行写入验证。
至少覆盖:
- PHP 配置参数正确迁移。
- PHP-FPM 全局和进程池参数正确迁移。
- 新版本默认参数不被旧默认值错误覆盖。
- 未知或不兼容参数。
- 重复与冲突参数。
- 迁移遗漏检测。
- 重复执行结果一致。
- 失败时原始配置不受影响。
- 首次安装行为不回归。
如条件允许,使用目标 PHP 版本进行配置语法检查。
### 六、本轮明确禁止
- 修改生产服务器。
- 正式升级 PHP 。
- 修改 `versions.txt` 中的 `php85_ver`。
- 修改其他 PHP 分支的升级行为。
- 开发复杂自动回滚系统。
- 进行无关的架构重构或性能优化。
- 执行 `git commit` 或 `git push`。
### 七、成本与执行原则
坚持性价比优先。
优先解决真实的生产配置迁移问题,不为追求完美架构增加不必要的实现和验证成本。
复用现有能力,采用最小改动。出现失败先排查和恢复,不要盲目重试。
完整日志保存本地 evidence ,终端只显示关键摘要、异常项和最终结果。
### 八、最终输出
中文总结:
1. 实际检查到的安装、升级和配置迁移现状。
2. 当前生产配置与仓库默认配置的主要差异。
3. 已修改的文件及修改原因。
4. 已实现的配置迁移能力。
5. 测试及验证结果。
6. 尚未解决的风险和阻碍。
7. PHP 官方正式发布修复版本后,还需要完成的工作。
8. 唯一下一步。
最后输出:
`===== FINAL =====`
包括 `RESULT`、`STAGE`、`MODIFIED_FILES`、`TEST_RESULT`、`PRODUCTION_MUTATION` 和 `NEXT_STEP`。
本轮目标是完成可靠的 PHP 8.5 配置迁移基础,而不是立即交付未经完整验证的生产自动升级功能。