必须用 composer create-project 安装 Yii2,因手动 require yiisoft/yii2 仅拉取核心包,缺失 web/index.php、yii 命令和 config 目录结构,导致 404 或 Class 'Yii' not found;官方模板 yiisoft/yii2-app-basic 或 yiisoft/yii2-app-advanced 才提供完整骨架。

直接用 composer create-project 装 Yii2,别碰 composer require yiisoft/yii2
手动 require 核心包根本跑不起来——它没 web/index.php、没 yii 命令、没 config/ 目录结构,访问直接 404 或 Class 'Yii' not found。官方模板(yiisoft/yii2-app-basic 或 yiisoft/yii2-app-advanced)才是完整骨架,含自动加载映射、入口脚本、环境初始化逻辑。
常见错误:
- 装完不跑
php init:高级版会报Invalid Configuration – yii\base\InvalidConfigException,因为environments/下的配置没生成 - 删了
composer.json里的"scripts"或"autoload":导致@app别名失效、TestCase找不到、yii命令不可用 - 用
--prefer-source:在国内大概率卡在Cloning into,强制加--prefer-dist走 ZIP 包更稳
fxp/composer-asset-plugin 必须卸载,它已停更且与 Composer 2.x / PHP 8+ 冲突
如果你看到 Could not parse version constraint 或前端资源安装失败,八成还挂着这个废弃插件。它自 2019 年起不再维护,官方明确弃用,且和当前主流工具链不兼容。
正确做法:
- 先全局卸载:
composer global remove fxp/composer-asset-plugin - 前端资源(如
bootstrap、jquery)改用npm install或yarn add管理,再通过自定义AssetBundle绑定node_modules路径 - 若必须走 Composer 加 Bower/NPM 包(例如遗留系统),改用社区维护分支,如
hiqdev/asset-packagist,并手动配置repositories
扩展安装后 Class not found?检查三处配置而非 Composer
运行 composer require kartik-v/yii2-detail-view 成功,但视图里调 DetailView::widget() 报错,问题几乎不在依赖加载,而在框架层。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
重点排查:
-
config/web.php的modules数组是否注册了该扩展所需模块(如yii2-admin需显式声明'admin' => ['class' => 'mdm\admin\Module']) -
components是否配了服务类(如yii2-redis必须加'redis' => ['class' => 'yii\redis\Connection']) - 是否遗漏迁移:某些扩展自带
migrations,需手动执行php yii migrate --migrationPath=@vendor/mdmsoft/yii2-admin/migrations
require 和 require-dev 写错位置,上线就出事
yii2-debug 和 yii2-gii 必须进 require-dev,否则生产环境会暴露调试面板,且触发不必要的自动加载开销;而 yiisoft/yii2-redis 这类运行时依赖必须进 require。
部署时务必用:
-
composer install --no-dev:避免把codeception、phpunit等非运行时依赖打进线上vendor/,减小体积、规避安全隐患 - 别信
composer update:生产环境应固定依赖版本,用composer install拉composer.lock记录的精确版本 - 本地开发用
composer require --dev,上线前确认composer.json里没混进不该存在的dev包
最常被忽略的是 Asset Bundle 的 publishOptions 开关和 sourcePath 路径映射——npm 安装的资源路径没错,但没启用发布机制,CSS/JS 就永远 404。

















