Skip to content

Build SaiAdmin

supdger edited this page Sep 30, 2026 · 1 revision

构建 SaiAdmin 后端

先确认项目属于已有兼容组合,完成 Composer 安装及普通 PHP 接口回归。使用 macOS Apple Silicon 或 Windows x64,进入 SaiAdmin 后端根目录(不是前端管理界面目录)。

webman-aot doctor
webman-aot build --profile=saiadmin
webman-aot verify --path=dist-aot

安装引导中已完成自动构建与校验时,可直接进入下一步。独立命令的成功判断同Webman 构建;部署时整个 dist-aot/ 一起复制,并配置外置 .env,见部署到 Linux。验证码、登录、用户信息与权限拒绝须在自己的目标环境验收;详细隔离测试见Linux 进阶验收。

普通 PHP 8.4 的独立迁移点

SaiAdmin 6.1.5 的 plugin/saiadmin/exception/SystemException.php 使用 Throwable $previous = null。普通 PHP 8.4 在 E_ALL 下首次触及权限 拒绝时会发出隐式可空参数弃用警告,项目异常处理器可能把它转为 业务 500。这不是 AOT 编译失败。等价修正是:

public function __construct($message, $code = 400, ?Throwable $previous = null)

该改动已在隔离的普通 PHP 8.4.18 回归副本中验证:保留原始 config/app.php 的 E_ALL,隔离文件缓存后,验证码、登录、 用户信息和权限拒绝四条路径均通过;一次性数据库及账号已清理, 隔离副本的源码已恢复。工具不会擅自修改目标项目。 回归时应保留 E_ALL,不要靠关闭弃用警告掩盖这个问题。 若项目已做此修复,AOT 适配规则接受原始和已修复的两种明确写法; 缺失、重复或混用仍会报错。SaiAdmin 安装期 vendor 模板与实际 plugin/saiadmin/ 副本若不一致,构建仍会拒绝静默排除模板; 应在项目的依赖补丁或上游版本中维护一致性。

新插件与业务代码

新增插件、更换依赖或改变业务后重新构建并回归接口。编译规则与新代码约束见AOT 适配原理;不能把 ELF 生成视为业务成功。

Clone this wiki locally