给项目配一个管理后台,最怕的不是没有轮子,是轮子装不上:框架版本对不上、依赖互相打架、装完只有一个空壳页面,菜单、权限、用户管理还得自己一行行补。Laravel 生态里后台扩展包不少,老的维护慢了,新的又要求最尖的 PHP 版本,夹在中间的项目最难受。
Dcat Admin 是一个基于 Laravel 的后台系统构建工具,自带登录鉴权、用户/角色/权限三件套、菜单管理、操作日志,页面走 AdminLTE 风格,表单和列表用 PHP 写配置就能出,不用碰前端构建。MIT 协议,PHP 8.0 起,Laravel 8 就能跑——这一点对大量还停在 Laravel 8 的存量项目很关键。我用一份 51MB 的发布包,在 Windows 和 Linux 两侧各完整装了一遍。
结论先给:Windows(PHP 8.2 + MySQL 8.0)侧从装包到出登录页 30 秒出头,Linux(WSL2,PHP 8.4 + SQLite)侧 admin:install 只要 1 秒,17 张表全部建好;同一份包两侧解出的 2633 个文件逐字节一致。它是 Composer 库形态,不是解压双击就能看的独立程序,需要配一个 Laravel 宿主项目——这一点放在最前面说,省得抱着「开箱即用」预期的人白跑。
它是什么,适合放在哪
Dcat Admin 的形态是 Laravel 扩展包(composer require dcat/laravel-admin),装完后它接管 /admin 路由,给你一套现成的后台:
- 登录、登出、记住我、验证码;用户、角色、权限、菜单四个管理模块开箱就有
- 列表页:搜索、筛选、快捷编辑、导出、批量操作都是配置出来的
- 表单页:20 多种表单元素,图片上传、多级联动、标签选择都有现成控件
- 前端资源随包发布(dcat、adminlte、字体、图标),不需要 npm 参与
- 操作日志、文件管理、代码生成器这些企业后台的常规件也都在包里
和同类比:它能跑在 Laravel 8 上,对老项目友好;页面由 PHP 配置驱动,后端人员不用学前端工程化。代价是深度定制页面时要进它的模板体系,想上 Vue 单页那套得绕路。
我的测试环境
- Windows:Windows 11,PHP 8.2.20,Composer 2.1.6,MySQL 8.0.29,Laravel 8.83.29
- Linux:WSL2 Debian 13,PHP 8.4.27,Composer 2.1.6,SQLite,同一份 Laravel 8.83.29
- 发布包:51.13MB zip,解出 2633 个文件,两侧逐文件 SHA-256 比对 0 差异
- 验证方式:命令行走完安装 + PHP 内置服务器起站 + Playwright 渲染截图,桌面 1400 宽 9 张、手机 390 宽 4 张
有一个环境上的坑先记下:Linux 侧最初用 Composer 2.11.1,它因为安全公告直接拦截了 Laravel 8 的全部版本(PKSA 系列),装不下去。换成 Composer 2.1.6 后一切正常,Windows 侧用的也是 2.1.6。
安装:Windows
前提:PHP 8.0+、Composer、一个能用的 MySQL。四步:
- 先建一个 Laravel 宿主项目:
composer create-project laravel/laravel:8.* hostapp实测拉了 106 个依赖包。Dcat Admin 要求 Laravel 8 以上,8.x 是最稳的搭配。
- 装本体,附带 doctrine/dbal(列表筛选和字段修改依赖它):
composer require dcat/laravel-admin:2.2.3-beta doctrine/dbal:^3.6 -W实测 25.0 秒,新增 8 个包、1 次自动降级,没有冲突。
- 发布静态资源并初始化数据库:
php artisan vendor:publish --provider="Dcat\Admin\AdminServiceProvider"
php artisan admin:installvendor:publish 实测 0.98 秒,产出 public/vendor/dcat-admin 共 816 个文件、24.93MB;admin:install 实测 3.43 秒,8 个迁移全过,管理员账号写入成功。.env 里记得先把数据库连好再跑第二条。
- 起服务看效果:
php artisan serve --host=127.0.0.1 --port=8010浏览器开 http://127.0.0.1:8010/admin,登录页 HTTP 200,首屏 0.47 秒。
安装:Linux
服务器上没有 Composer 也没关系,流程一样,SQLite 都能跑:
composer create-project laravel/laravel:8.* hostapp
composer require dcat/laravel-admin:2.2.3-beta doctrine/dbal:^3.6 -W
php artisan vendor:publish --provider="Dcat\Admin\AdminServiceProvider"
php artisan admin:installWSL2 实测:composer require 26 秒退出码 0,vendor 43 个目录;vendor:publish 1 秒,816 个文件 28MB,与 Windows 侧同数量同结构;admin:install 1 秒,17 张表建立成功(admin_users、admin_menu、admin_roles 等都在)。起内置服务器后登录页 200、0.147 秒,未登录访问 /admin 正确 302 回登录页,js/css 静态资源全 200。
跨平台一致性是我最看重的一项,两边逐文件比过:2633 个文件 SHA-256 全等。也就是说装出来的东西跟操作系统、PHP 小版本、MySQL 还是 SQLite 都没关系。
上手:建一个带管理的模块
admin:install 生成的后台默认只有控制台首页,业务模块要自己加。以最常见的文章管理为例:
- 建模型和迁移,迁移里把字段定好,跑 php artisan migrate
- 在 app/Admin/Controllers 里建控制器,继承 AdminController,grid() 写列表列、form() 写表单字段
- 打开 app/Admin/routes.php,把路由挂上:
$router->resource('posts', 'PostController');- 后台「菜单」里加一项指向 /posts,刷新就能看到列表页
我实测就是这么建了一个文章模块,造了 48 条演示数据,列表 20 行分页正常,详情、新建、编辑三个页面全部打开。生产部署走 Nginx + PHP-FPM 的常规 Laravel 流程即可,把站点根指到 public/,伪静态规则和其他 Laravel 项目完全一样。
实测数据
- 依赖安装:Windows composer require 25.0 秒;Linux(WSL2)26 秒,均退出码 0
- 静态资源发布:0.98 秒(Win)/ 1 秒(Linux),816 个文件,24.93MB / 28MB
- 数据库初始化:3.43 秒 8 个迁移(Win + MySQL);1 秒 17 张表(Linux + SQLite)
- 登录页:200,首屏 0.47 秒(Win)/ 0.147 秒(Linux);未登录访问 /admin 302
- 后台页面:列表/详情/新建/编辑/用户/角色/菜单 7 个页面全 200,单页加载 2.22–2.42 秒
- 跨平台比对:2633 个文件两侧 SHA-256 全等,前端产物数量一致
- 截图巡检:13 张,console error 0、pageerror 0、4xx/5xx 请求 0
- 成品包:53,611,237 字节(51.13MB)、13,919 个条目;解压 6.25 秒出 13,921 个文件
界面长什么样
登录页是经典的后台样式,居中卡片加验证码:

控制台首页,环境信息、版本、快捷入口都铺在面板上:

列表页自带搜索、筛选和批量操作,数据多也不乱:

详情页把字段铺成一目了然的描述列表:

新建表单的控件排版,分组和提示语都是配置出来的:

管理员、角色、菜单三个系统模块开箱即有:



手机端同样是响应式的,列表和表单在小屏上正常操作:

一个真实的坑
打包验证时踩到一个值得写下来的问题:把宿主项目连同后台一起分发,解压后跑 php artisan 直接报错 Symfony Finder「The "" directory does not exist」。查下来是发布包里的 bootstrap/app.php 写死了 $_ENV['APP_BASE_PATH'],服务器 PHP 没开 variables_order = E 时这个值取到空串,base_path 就落到了上一级目录,整个应用找不到自己的根。
修法是把 bootstrap/app.php 里的这一行改成与 Laravel 8 官方骨架一致:
new Application(dirname(__DIR__))改完复验通过。如果你拿到包后也遇到这个报错,按这个方向查 bootstrap 目录即可,不用怀疑数据库或权限。
这几类人适合,这几类不适合
适合:
- Laravel 8 项目要补一个完整后台,不想从零搭用户/角色/权限的
- 团队只有后端,希望列表和表单用 PHP 配置出、不碰前端构建的
- 存量项目 PHP 版本上不去、装不了最新一代后台框架的
- 接企业内部系统,登录、菜单、操作日志这些件要现成的
不适合:
- 不用 Laravel 的项目。它是深度绑定 Laravel 的扩展包,换框架等于重写
- 想要前后端分离、Vue/React 单页后台的。它的页面是服务端渲染加自带前端资源
- 希望解压双击就能看效果的。必须先有 PHP + Composer + 一个 Laravel 宿主
- 项目在 Laravel 10/11 上且不想降级或做兼容的,装之前先核对版本支持
常见问题
{collapse-item label="装完后台首页是空的,是不是没装好?"}A:不是。默认只有控制台页,业务菜单和模块要自己建控制器、挂路由、加菜单,见上文「上手」一节。{/collapse-item}
{collapse-item label="composer require 时被拦,提示 PKSA 安全公告怎么办?"}A:是新版 Composer 对 Laravel 8 旧版本的安全拦截。实测降回 Composer 2.1.x 后正常安装,Windows 和 Linux 两侧都验证过。{/collapse-item}
{collapse-item label="PHP 版本有什么要求?"}A:PHP 8.0 起。实测 8.2(Windows)和 8.4(Linux)都能跑完整流程,Laravel 宿主用 8.x 最稳。{/collapse-item}
{collapse-item label="前端资源要 npm 编译吗?"}A:不用。vendor:publish 会把全部 css/js/字体/图标发到 public/vendor/dcat-admin,共 816 个文件,开箱即用。{/collapse-item}
{collapse-item label="忘了管理员密码怎么重置?"}A:admin_users 表的 password 字段存的是 bcrypt 哈希,用 tinker 或一段 PHP 重新生成一个哈希写回去即可。{/collapse-item}
资源获取
建议先转存到自己网盘再下载。手机上打开链接点右下角「保存到网盘」,回头在夸克 App 的「我的网盘」里下。