最可靠方式是用 composer require 安装扩展,因其自动写入 composer.json、下载包并更新 psr-4 映射;但必须手动在 config/web.php 中注册 components、运行迁移(如需)、注册 asset bundle(如需),且卸载后须清理配置,否则静默失效。

直接用 composer require 安装扩展最可靠,别手写 composer.json 再 composer install——容易漏 autoload 映射或触发依赖冲突;所有官方扩展都已适配 PSR-4,装完自动可 new,但多数需在配置里显式启用。
为什么不能只 composer require yiisoft/yii2 就算装好 Yii2?
因为 yiisoft/yii2 只是核心库,不含应用骨架:没有 web/index.php、没有 config/web.php、也没有 yii 命令脚本。你只会得到一堆类文件,连 Class 'Yii' not found 都报不出来——入口根本没建。
- 正确做法是先用
composer create-project --prefer-dist yiisoft/yii2-app-basic basic拉完整模板 -
create-project会自动执行post-create-project-cmd脚本,初始化别名(如@app)、权限、autoload 映射和 dev 依赖 - 删掉
scripts或autoload段落会导致php yii serve失效、Yii::setAlias()不生效、测试类找不到
composer require 安装扩展时的三个关键动作
运行 composer require yiisoft/yii2-redis 后,Composer 实际做了三件事:写入 composer.json 的 require 段、下载包到 vendor/、更新 vendor/autoload.php 的 PSR-4 映射。但仅此还不够。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 必须在
config/web.php的components里注册:'cache' => ['class' => 'yii\redis\Cache'] - 部分扩展带迁移(如
yii2-user),要手动跑:php yii migrate --migrationPath=@vendor/username/yii2-user/migrations - 如果扩展含 Asset Bundle(如
yii2-bootstrap5),需在视图中use app\assets\BootstrapAsset; BootstrapAsset::register($this);
升级或卸载扩展时最容易踩的坑
composer update 默认更新全部依赖,可能把 yiisoft/yii2 升到 2.1+(不兼容),而 composer remove 不清理配置,残留的 modules 或 components 会导致启动时报 Class not found。
- 只更新某个扩展:用
composer update yiisoft/yii2-redis,别裸跑update - 生产环境部署前加
--no-dev --optimize-autoloader,否则autoload_classmap.php会变大且慢 - 卸载后务必检查
config/*.php,删掉对应modules、components、bootstrap项,否则应用启动失败 - 若遇到
require yisoft/yii2 ~2.0.43报错,不是版本问题,而是子包锁定了旧约束——删掉composer.lock和vendor/重来更干脆
真正麻烦的从来不是装不上,而是装上了却没启用、启用了却没清旧配置、清了配置又忘了删 migration 表——Yii2 的扩展机制是“自动加载 + 手动注册”双层结构,漏一层就静默失效。










