zhongchuanhao / ex-webman-admin
Ex-Admin for webman 2.x:基于 Ant Design of Vue + webman 的后台系统构建工具(原 rockys/ex-admin 停更后的 PHP 8.4 + webman 2.2 适配版)
Package info
gitee.com/zhong-chuanhao/ex-webman-admin.git
pkg:composer/zhongchuanhao/ex-webman-admin
Requires
- php: >=8.1
- ext-json: *
- ext-zip: *
- guzzlehttp/guzzle: ^7.0
- illuminate/database: ^10.0 || ^11.0 || ^12.0
- illuminate/events: ^10.0 || ^11.0 || ^12.0
- illuminate/filesystem: ^10.0 || ^11.0 || ^12.0
- illuminate/redis: ^10.0 || ^11.0 || ^12.0
- illuminate/validation: ^10.0 || ^11.0 || ^12.0
- league/flysystem: ^3.0
- phpoffice/phpspreadsheet: ^1
- psr/container: ^1.1 || ^2.0
- psr/log: ^2.0 || ^3.0
- rockys/echarts-php: ^1
- symfony/cache: ^6.0 || ^7.0
- symfony/console: ^6.0 || ^7.0
- symfony/filesystem: ^6.0 || ^7.0
- symfony/finder: ^6.0 || ^7.0
- symfony/http-foundation: ^6.0 || ^7.0
- symfony/process: ^6.0 || ^7.0
- symfony/translation: ^6.0 || ^7.0
- vlucas/phpdotenv: >=5
- webman/cache: ^2
- webman/console: ^2
- webman/database: ^2
Requires (Dev)
None
Suggests
- iidestiny/laravel-filesystem-oss: 阿里云 OSS 存储驱动(需自行适配 league/flysystem ^3)
- overtrue/laravel-filesystem-qiniu: 七牛云存储驱动(需自行适配 league/flysystem ^3)
- webman/log: 使用 webman/log 插件记录日志时需要
- webman/redis: 使用 Redis 缓存与会话时需要
- webman/redis-queue: 使用队列任务(如表格导出)时需要,同时要求 ext-redis
Provides
None
Conflicts
None
Replaces
None
This package is not auto-updated.
Last update: 2026-10-15 02:18:04 UTC
README
Ex-Admin for webman —— 基于 Ant Design of Vue + webman 的后台系统构建工具,只用 PHP 代码即可构建功能完善的后台系统。
本项目是原作者停止维护的 rockys/ex-admin-ui + rockys/ex-admin-webman 的适配续命版,合并为单个 composer 包,目标环境 PHP 8.4 + webman 2.2 + workerman 5.1。
为什么需要这个包
| 问题 | 说明 |
|---|---|
| 上游停更 | rockys/ex-admin-webman 停在 1.0.2(2023-01-02) |
| 依赖冲突 | 上游锁死 psr/container ^1、league/flysystem ^1\|^2,与 webman 2.x 要求的 psr/container ^2 冲突 |
| Symfony 7 | Request::getContentType() 等 API 已被移除 |
| PHP 8.4 | 闭包反射名由 {closure} 变为 {closure:file:line};隐式可空参数弃用 |
| 插件市场 | admin:install 原依赖 https://ex-admin.idtime.cn 下载插件,现已内置到包内,离线可用 |
兼容矩阵
| 组件 | 版本 |
|---|---|
| PHP | >= 8.1(已在 8.4.16 验证) |
| webman-framework | ^2.1(已在 2.2.1 验证) |
| workerman | ^5.1 |
| league/flysystem | ^3 |
| Symfony 组件 | ^6 || ^7 |
| Illuminate 组件 | ^10 || ^11 || ^12 |
安装
composer require zhongchuanhao/ex-webman-admin
唯一需要你做的事:填 .env
composer require 时会自动完成两件事,你不需要手改任何 config 文件:
- 把
webman/database生成的config/database.php占位值(your_database/your_username/your_password)改成读取.env - 项目根目录没有
.env时,自动从包内的.env.example生成一份
所以只需要在 .env 里填数据库信息:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database
DB_USERNAME=your_user
DB_PASSWORD=your_password
已填真实连接信息的
config/database.php不会被改动(幂等)。
然后执行安装(创建 addons/webman、镜像前端资源、建表、写入管理员):
php webman admin:install --username=admin --password=admin
安装命令会先检查数据库连接;如果 .env 里的库还不存在,会自动创建(utf8mb4)。连接不通时会直接提示去 .env 里改 DB_*,不再需要动 config。
启动(Windows 用 php windows.php):
php start.php start
浏览器打开 http://127.0.0.1:8787/admin 登录。
包结构
| 目录 | 说明 |
|---|---|
src/ui/ | ExAdmin\ui\* 渲染内核(Grid/Form/Detail/组件/插件管理),框架无关 |
src/webman/ | ExAdmin\webman\* webman 适配层(引导、请求转换、安装命令) |
addons/webman/ | 系统插件本体(管理员/菜单/角色/部门/配置等),安装时复制到项目 addons/ |
resources/ | 前端构建产物,安装时镜像到 public/exadmin |
适配记录(相对上游)
src/ui/support/Request.php:getContentType()→headers->get('CONTENT_TYPE')src/ui/traits/CallProvide.php:兼容 PHP 8.4 闭包名{closure:file:line},并对反射失败短路(避免热路径异常开销)src/webman/ServiceProvider.php:start(?Worker $worker)对齐 webman 2 的Bootstrap接口;前端资源改为从包内resources/镜像src/webman/command/AdminInstall.php:改为打包包内addons/webman本地安装,不再请求官方插件市场addons/webman/filesystem/*:Flysystem 3 适配器(LocalFilesystemAdapter、FilesystemAdapter三参构造)addons/webman/ServiceProvider.php:手动绑定Illuminate\Contracts\Validation\Factory(webman 2 不再自动引导 Laravel 服务)config/plugin/rockys/ex-admin-webman/process.php:缺少webman/redis-queue或ext-redis时不注册队列消费进程- 全量修正 PHP 8.4 隐式可空参数弃用(36 处)
src/ui/support/Composer.php:不再按目录层级硬猜vendor/autoload.php,改为「已注册自动加载器 → 已包含的vendor/autoload.php→ 逐级回溯」三级查找,兼容 path 软链仓库addons/webman/helpers.php:validator()在无 Eloquent 连接解析器时先触发support\Db::connection()初始化,修复 webman 2 下登录等场景的DatabasePresenceVerifier空指针
License
继承上游 Apache-2.0。