supdger / webman-aot-builder
Composer entry point for Webman AOT Builder; platform runtime is prepared separately
Package info
github.com/supdger/webman-aot-builder
Type:composer-plugin
pkg:composer/supdger/webman-aot-builder
Requires
- php: >=8.1
- composer: >=2.5.3
- composer-plugin-api: ^2.0
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-main
- v0.4.0
- v0.3.7
- v0.3.6
- v0.3.5
- v0.3.4
- v0.3.3
- 0.1.0
- dev-codex/resumable-compilation
- dev-codex/composer-auto-guide
- dev-codex/composer-first-use-guide
- dev-codex/record-composer-035-owner-publication
- dev-codex/composer-package-owner-correction
- dev-codex/record-composer-034-publication
- dev-codex/guided-multi-version-uninstall
- dev-codex/record-composer-publication
- dev-codex/integrate-composer-distribution
- dev-development
- dev-feat/full-static-sdk-cross-host
This package is auto-updated.
Last update: 2026-10-01 17:08:53 UTC
README
徽章链接到 2026-09-30 的实机构建与启动记录。
Webman AOT Builder 将 Webman / SaiAdmin 项目编译成 Linux amd64 全静态程序。
在 macOS Apple Silicon 或 Windows x64 开发机上安装工具、构建项目,再将生成的 dist-aot/ 部署到 Linux,目标机无需安装 PHP。
当前处于开发阶段,公开包可用于开发验证;安装、构建和续编的现有验证见下方记录,Linux 业务流程尚未完整验收。 已有检查及其适用范围见 测试与验证范围。
实现方式
构建器在项目副本中做兼容适配,通过 TypePHP 编译 PHP 代码,再用 Clang 和 PHPx 静态 SDK 生成可执行程序。 原项目源码保持不变,配置、模板和静态资源按需保留为外置文件。
安装与开始使用
方式一:Composer
开发机需 PHP 8.1+、Composer 2.5.3+。先按目标项目自身要求安装 Composer 依赖,备好 vendor/,在 macOS 终端或 Windows PowerShell 运行:
composer global require supdger/webman-aot-builder
入口版本 0.4.0 使用对应 0.4.0 完整运行时;旧入口 0.3.7 仍绑定 0.3.2。首次 Composer 询问插件信任时输入 y,自动进入引导。引导自动识别开发机系统,准备对应完整运行时;选择开始或导入完整包,再输入或拖入 Webman / SaiAdmin 后端根目录的完整路径。该目录须包含 composer.json、composer.lock、start.php 和 app/。
网络受阻时,可从最新完整发行页下载对应开发机的完整包,在同一菜单选择导入并输入或拖入包路径。构建及本机校验成功后显示 dist-aot/ 位置;包安装与项目流程分别显示结果,Composer 后续安全审计照常执行。下次只需运行:
composer global exec -- webman-aot guide
方式二:安装包
适用于 macOS Apple Silicon 或 Windows x64 开发机。项目须事先按自身要求安装 Composer 依赖并备好 vendor/;从最新完整发行页下载与你的开发机匹配的 setup:
- Mac:文件名以
macos-arm64-setup.zip结尾,解压后双击其中的.command。 - Windows:文件名以
windows-x86_64-setup.cmd结尾,双击运行.cmd。
按菜单选轻量包或完整包,确认安装位置及 PATH 影响,再选择“构建项目”,输入或拖入已备好依赖的后端根目录。轻量包首次构建需联网下载组件;完整包含编译组件,自己的项目依赖仍须预先准备。构建及本机校验成功后显示 dist-aot/ 位置。手动下载或离线安装见安装指南。
方式三:源码编译
适用于需要从源码制作工具包的开发者;开发机仍须为 macOS Apple Silicon 或 Windows x64,构建所需锁定材料需联网准备,目标项目的 Composer 依赖须提前安装。到GitHub 仓库选择 Code → Download ZIP,解压并进入包含 build.command 与 build.cmd 的源码根目录。
Mac 在终端运行:
sh ./build.command
Windows 在 PowerShell 运行:
.\build.cmd
入口准备锁定材料、制作并校验安装包,确认安装后选择项目。构建及本机校验成功后显示 dist-aot/;源码构包成功不等于项目构建成功。详细步骤见源码构建指南。
macOS 首次打开被拦截时
首次双击 setup.command 或 install.command,可能看到“未打开”或“Apple 无法验证”提示。先确认文件来自本项目 正式发行页,并用同一版本的 SHA256SUMS 核对下载文件,然后按以下步骤操作:
-
在提示窗口点 “完成”,保留文件,不要点“移到废纸篓”。
-
打开苹果菜单 → 系统设置 → 隐私与安全性,向下滚动到 “安全性”。
-
找到“已阻止
install.command(或setup.command)”的提示,确认文件名后点 “仍要打开”。 -
按系统提示再次确认“打开”或“仍要打开”,并完成登录密码或 Touch ID 验证。若终端未自动出现,回到解压目录,再双击同一个
.command。 -
终端打开后,按安装器提示继续。
若找不到“仍要打开”,重新双击一次文件,再回到该设置页面;该按钮通常只在尝试打开后约一小时内显示。详见 Apple 官方说明。以上步骤适用于“无法验证”提示;若提示“将损坏你的电脑”或“文件已损坏”,请停止安装,重新下载并核对校验值。
构建过程与结果
过程会显示当前步骤、实际下载状态和编译器输出的文件计数。较长步骤没有新输出时,会显示进程状态、已用时间和无输出时长;沉默期间的工作进度会标为未知。成功时告诉你产物位置和下一步;失败时保留原始原因,提供恢复建议、本机日志位置和 Issues 地址。项目构建失败后可选择继续编译、重选目录、全量重建或结束。
发布状态以 Release 中实际提供的资产为准;源码候选不等于已公开的安装包。开发状态及已有记录见 开发状态与历史记录。
自动 verify 检查构建产物的结构、完整性及工具报告的静态属性;Linux 目标机启动、数据库和业务接口仍需部署后验收。
断点续编
0.4.0 默认复用输入一致且大小、SHA-256 校验通过的已完成编译单元;未完成或损坏的单元从头编译。项目失败后先修正错误,再在引导中选 1 继续编译;2 重选目录、3 全量重建此目录、0 结束。以后在项目根目录运行 webman-aot build 也会自动恢复,每次仍重新链接并校验最终产物。
webman-aot build --fresh 会重新编译全部单元,不清理旧缓存或失败构建目录。对象缓存位于项目内 .webman-aot-builder/cache/objects/;失败构建目录会保留并占用磁盘,成功后清理本轮临时镜像。规则及验证边界见源码构建指南与测试与验证范围。Windows 原生 CI 已验证安装、续编及强制中断恢复;用户 Windows 实机续编与 PHP 8.1 原生流程仍未验收。
v0.3.2 兼容范围
v0.3.2 适配锁定的 Carbon 3.14.1 与 symfony/polyfill-deepclone 1.42.0,并使用本项目重建的 PHPX 静态 SDK 支持其所需的闭包绑定和引用存储。适配只作用于隔离构建副本,版本或源码摘要不匹配时拒绝应用;Closure::call() 仍不支持。适用组合与限制见 SaiAdmin 兼容说明。
普通安装继续选择 setup。维护者的 webman-aot-builder-0.3.2-derived-linux-x86_64-sdk.tar.xz 是 Linux x86_64 musl 目标 SDK 素材,不是开发机安装包或 PHPX 官方发行资产;来源与重建步骤见 源码构建指南。
安装后的命令行使用
引导入口会自动执行校验。需要以后单独构建其他项目时,可在已安装的终端中使用 webman-aot;命令和启动示例见 安装与使用指南。SaiAdmin 的适用版本及要求见 SaiAdmin 兼容说明。
Composer 入口 0.3.5 提供 webman-aot uninstall --list(只读列出)与 webman-aot uninstall(逐项输入 y 卸载、回车保留、q 结束)。清理旧原生版本时,请从 Composer 命令目录的代理启动,按列表选择旧版本,保留“Composer 全局包”这一项,再重新列出剩余入口。无法确认归属的旧入口保留并说明原因,旧备份命令不会自动恢复;项目产物、共享组件和 PATH 保留。旧原生 0.3.2 完整包没有此新命令;0.4.0 已将对应程序整合进新原生包,Windows 原生卸载脚本及 PHP 8.1 实机验收仍未完成。具体清理与改用 Composer 的步骤见升级与卸载。
构建结果
产物结构示意(运行资源随项目而异):
dist-aot/
├── server # Linux amd64 全静态程序
├── start.sh # 启动脚本
├── stop.sh # 停止脚本
├── config/ # 外置配置
├── … # 项目所需的模板、静态资源等
└── manifest.json # 分发清单
把整个 dist-aot/ 复制到 Linux amd64 目标机,按项目需要配置 .env、数据库等运行环境后,
在该目录启动:
./start.sh
后台运行用 ./start.sh --daemon,停止用 ./stop.sh。
目标机配置和启动后的业务检查见 Linux 部署与验收。
完整包续编验证
2026-10-01,Agent 在 macOS Apple Silicon 隔离安装实际完整包,构建中立 Webman 109 单元项目。首轮复用 0/109;不改输入重试复用 109/109 并重新链接;损坏对象与完成记录后复用 107/109、重编两单元;源码变化后复用 108/109;--fresh 复用 0/109。各轮产物校验通过,首轮与同输入重试 ELF 摘要一致。 Windows 原生 CI 也通过五轮回归;强制终止构建父进程及其编译子树后,重试复用 14/109、编译剩余 95 单元,重新链接及校验通过,同项目并发构建安全拒绝。此处是实际安装包的 Agent 测试,不能代替真人试用或 Linux 业务验收;固定包身份、耗时及其他平台边界见测试与验证范围。
实机构建与启动验证
2026-09-30,用户在 macOS Apple Silicon 和 Windows x64 实机构建 SaiAdmin 项目,并分别将产物复制到 Linux x86_64 服务器启动。以下为用户提供的终端关键输出摘录;macOS 和 Windows 是构建宿主,生成的程序面向 Linux。
macOS Apple Silicon:构建并在 Linux 启动
使用轻量包安装并准备编译组件,构建 SaiAdmin 项目。以下保留安装、组件准备、编译及产物校验的关键节点,省略重复进度行:
Package contents SHA-256 verified.
[成功] 校验包并安装,耗时 0.8 秒,退出码 0
webman-aot 0.3.2
[prepare] Extracted 7614/7614 verified entries
[prepare] Minimal component SHA-256 verification complete
[prepare] Minimal toolchain activated and ready.
[2063/2063] 100% extension-webman_server.cc
Successfully compiled 2063 files
[build] Compiler process completed in 529.8s; exit code 0.
[成功] 构建项目,耗时 582.3 秒,退出码 0
[成功] 校验本次项目产物,耗时 0.8 秒,退出码 0
项目构建与校验成功。
将这次 Mac 构建的产物复制到 Alibaba Cloud 3 (Soaring Falcon) x86_64 服务器,在产物目录执行 ./start.sh,报告 8 个 worker 启动成功(文字日志中的进程用户名已脱敏)。用户提供的服务器环境标注为 x86_64 (Py3.7.16);Py3.7.16 是服务器环境信息,程序的 PHP 版本见下方启动日志:
Workerman[main.php] start in DEBUG mode
Workerman/5.2.2 PHP/8.4.25 (JIT off) Linux/5.10.134-16.3.al8.x86_64
event-loop proto user worker listen count state
select tcp <用户> webman http://0.0.0.0:8788 8 [OK]
Press Ctrl+C to stop. Start success.
Windows x64:构建并在 CentOS 7 启动
使用 Windows 完整包构建 SaiAdmin 项目。现有日志保留了编译尾段、构建完成和产物校验,构建总耗时约 35 分 43 秒:
[1920/2063] 94% vendor\symfony\console\Formatter\OutputFormatterStyleStack.cc
[2063/2063] 100% extension-webman_server.cc
Successfully compiled 2063 files
[build] Compiler process completed in 2083.7s; exit code 0.
[成功] 构建项目,耗时 2142.9 秒,退出码 0
[成功] 校验本次项目产物,耗时 1.3 秒,退出码 0
实际校验范围:本机构建产物结构和完整性
项目构建与校验成功。
将这次 Windows 构建的产物复制到另一台 CentOS 7 服务器,在产物目录执行 ./start.sh,报告 4 个 worker 启动成功(文字日志中的进程用户名已脱敏):
Workerman[main.php] start in DEBUG mode
Workerman/5.2.2 PHP/8.4.25 (JIT off) Linux/3.10.0-1160.95.1.el7.x86_64
event-loop proto user worker listen count state
select tcp <用户> webman http://0.0.0.0:1717 4 [OK]
Press Ctrl+C to stop. Start success.
两台开发机的构建与产物校验均成功,两个 Linux 目标环境均报告服务启动成功;Mac 安装过程另有成功记录。启动仍有兼容性告警,HTTP、数据库和业务接口尚未验收。详细过程见 实机测试记录。





