php artisan admin:install 不能回滚,因为它不走 laravel 迁移流程,不生成 migration 文件、不写入 migrations 表,仅执行一次性数据库建表、文件生成和数据初始化;彻底卸载需手动删除 admin_* 表、app/admin 目录、public/vendor/laravel-admin 资源、config/admin.php 及服务提供者注册,并清除 composer.json 和路由/启动钩子残留。

无法回滚 php artisan admin:install,它没有内置回滚机制;必须手动清理。
为什么 php artisan admin:install 不能直接 rollback
该命令本质是执行数据库迁移 + 生成文件 + 初始化数据(如 admin 用户、菜单),但它不记录迁移版本号,也不写入 migrations 表——所以 php artisan migrate:rollback 对它完全无效。
- 它调用的是内部安装逻辑,不是标准 Laravel migration 流程
- 生成的表(如
admin_users、admin_menu、admin_permissions等)不会出现在migrations表中 - 运行后不会留下可追踪的 migration 文件供 rollback 使用
彻底卸载:删除数据库表 + 清理文件 + 移除服务
要真正“卸载”,需三步并行,缺一不可:
-
删库表:手动执行 SQL 删除所有
admin_*开头的表(常见有 7 张:users、roles、permissions、menu、operation_log、user_permissions、role_permissions) -
删文件:
- 删除目录:
app/Admin - 删除静态资源:
public/vendor/laravel-admin - 删除配置:
config/admin.php
- 删除目录:
-
移除服务注册:检查
config/app.php中是否残留Encore\Admin\Providers\AdminServiceProvider::class,如有则删除
卸载后仍报错?重点检查这三处
即使删了文件和表,以下位置残留会导致后续命令异常或 500 错误:
-
composer.json里仍有"encore/laravel-admin"—— 运行composer remove encore/laravel-admin彻底卸载包 -
routes/web.php或app/Providers/RouteServiceProvider.php中手动加过Admin::routes()—— 必须删掉,否则路由加载时报类不存在 -
app/Providers/AppServiceProvider.php中调用了Admin::booting(...)或类似钩子 —— 同样需清除,否则启动时 fatal error
最易被忽略的是路由和服务提供者残留——它们不会报“找不到 laravel-admin”,而是抛出 Class 'Encore\Admin\Admin' not found 或空路由异常,排查时容易误判为环境问题。











