新手应选基础版:命令为composer create-project --prefer-dist yiisoft/yii2-app-basic basic,单入口web/,配置静态,适合轻量项目;高级版命令不同、需执行./init、含frontend/backend双入口及environments动态配置,仅适用于明确需前后台分离的中大型项目。

新手选错模板,后面八成要重装——基础版和高级版不是“功能多寡”的区别,而是项目骨架完全不同。命令、目录结构、入口位置、配置生成方式全都不一样,混用会导致路由失效、配置报错、web目录404等问题。
安装命令根本不同,不能只改包名
基础版和高级版是两个独立的 Composer 包,命令写错一个字就装错项目:
- 基础版:运行 composer create-project --prefer-dist yiisoft/yii2-app-basic basic
- 高级版:运行 composer create-project --prefer-dist yiisoft/yii2-app-advanced advanced
注意:yiisoft/ 命名空间不能省,yii2-app-basic 不是 yii2-basic;高级版装完必须立刻执行 ./init(Linux/macOS)或 init.bat(Windows),否则 config 文件缺失,访问直接报 InvalidConfigException。
入口路径和 Web 服务器配置差异极大
基础版只有一个 web/ 目录,所有请求走 basic/web/index.php;高级版有两个独立入口:advanced/frontend/web/ 和 advanced/backend/web/,它们不能共用一个域名根目录。
- 本地开发用 phpEnv 或类似工具时:基础版站点根目录必须设为 /path/to/basic/web
- 高级版必须建两个独立站点:一个指向 /path/to/advanced/frontend/web,另一个指向 /path/to/advanced/backend/web
- 若把高级版整个项目根目录设为站点根,index.php 会找不到
../vendor/autoload.php,直接 500 错误
适用场景决定模板,不是“以后升级”就能切换
基础版适合单应用轻量项目:内部工具、API 服务、个人博客、快速验证想法。它没有 frontend/backend 分离压力,模型控制器视图都在同一层,上手快、调试直觉强。
高级版适合明确需要前后端分离部署的中大型项目:比如前台 www.example.com + 后台 admin.example.com,或需独立后台权限控制、定时任务(console)、共享模型逻辑(common/)等。
- 别因为“以后可能做大”就提前选高级版——90% 的新手会把所有代码塞进 frontend,backend 只放几个 CRUD,白白增加跨应用调试成本
- 基础版也能用 Gii、RBAC、命令行操作数据库,它的 vendor/ 和核心能力跟高级版完全一致
- 高级版删掉 backend/ 目录后,可当单应用用;基础版也可手动加 modules/,不必被模板限制
配置加载机制一个静态一个动态
基础版的 config/db.php、config/web.php 是静态文件,改完即生效;高级版的配置由 environments/ 目录驱动,init 脚本根据 dev/prod 环境复制对应配置到 config/ 下,比如 environments/dev/frontend/web.php → config/frontend/web.php。
- 跳过 init 就等于没配置——连 cookieValidationKey 都不会自动填,登录、表单提交全失败
- 数据库配置在 environments/*/common/main-local.php,不是 frontend/config/main-local.php
- 修改 backend 入口时,要检查 backend/web/index.php 中 $appConfig 路径是否指向正确的环境配置文件











