基础版是单入口快速启动模板,所有代码集中于同一应用,无需init脚本;高级版预设frontend、backend、console三入口及common共享层,必须通过域名或端口物理隔离,支持权限、部署与协作的严格分离。

选型前必须搞清Yii基础版和高级版到底差在哪——不是“高级版功能多”,而是目录结构、部署方式、权限隔离粒度完全不同,直接决定你后续三个月要不要反复改路由、重写cookie域、拆模块。
基础版:单入口、快启动、无共享层
第一步:解压即用,【无需运行 init 脚本】,config/web.php 里 cookieValidationKey 手动补上密钥就能跑。
第二步:所有代码堆在同一个应用里——controllers/、models/、views/ 全在根目录下,连 frontend/ 都没有,访问地址就是 http://localhost/web/index.php。
第三步:想加后台?自己建 AdminController,权限靠 RBAC 手动配;想加定时任务?得自己写 console 入口脚本,不能直接用 ./yii command。
高级版:三入口预设 + 共享层强制分离
高级版不是“多两个文件夹”那么简单——它默认把项目切成 frontend(用户端)、backend(管理端)、console(命令行)三个独立应用,common 是唯一允许跨应用复用的代码层。
方法一:初始化必须做
进入项目根目录 → 运行 php init → 选开发模式(0)→ 输入 yes 确认。跳过这步,config/*.php 不生成,访问任何 web 目录都会报 InvalidConfigException。
方法二:域名或端口必须分治
frontend 和 backend 不能共用同一域名根路径。要么配两个域名(yii.frontend.com + yii.backend.com),要么用不同端口(8080 前端 / 8081 后台),否则 session 和 cookie 会互相污染。
方法三:common 目录不是可选配件
模型类若放在 common/models/ 下,frontend 和 backend 才能同时 use;如果图省事把 User 模型扔进 frontend/models/,backend 就得复制一份或硬 require,后期改字段要同步两处。
什么时候该选高级版?
第一步:确认你是否需要【物理隔离后台权限】——比如 admin.example.com 的登录态绝对不能被 www.example.com 读取,且后台菜单渲染逻辑、RBAC 规则、日志审计策略全要独立配置。
第二步:检查是否有后台作业需求——定时清理缓存、消费消息队列、批量导入 Excel,这些必须走 console 应用,./yii cache/clear → ./yii queue/run 这类命令才天然支持。
第三步:评估团队分工——前端组只碰 frontend/,后端组只改 backend/ 和 common/,运维按应用单独部署、扩缩容,这时高级版的目录边界就是协作契约。
不满足以上任一条件,基础版省下的配置时间够你写三个 API 接口。
常见踩坑点
高级版删掉 backend/ 后仍保留 common/ ——这是安全的,common 可以当普通类库引入基础模板项目,但反过来不行:基础模板项目无法直接套用高级版的 common/autoload.php 自动加载规则。
【别把高级版当基础版用】——所有控制器塞 frontend/、backend/ 只放 login/logout,等于白搭三套配置,还平添跨应用调试成本。
基础模板的 vendor/ 和核心能力与高级版完全一致,Gii 生成代码、AR 查询、RESTful 路由全部可用,不存在“阉割”说法。











