应使用 composer create-project 初始化 Yii2 项目,如 composer create-project --prefer-dist yiisoft/yii2-app-basic basic;手动 require 仅得空壳,无法运行。

Composer 不是“配合” Yii,而是 Yii 项目能跑起来的刚性前提——没它,vendor/autoload.php 不存在,Yii::createObject() 找不到类,php yii migrate 直接报错退出。
composer create-project 是唯一推荐的初始化方式
手动 composer init + composer require yiisoft/yii2 会得到一个只有核心库、没有 web/index.php、没有 config/web.php、也没有 runtime/ 可写路径的“空壳”,根本无法访问首页。
- 用官方模板:执行
composer create-project --prefer-dist yiisoft/yii2-app-basic myapp(轻量)或composer create-project --prefer-dist yiisoft/yii2-app-advanced advanced(前后端分离) -
--prefer-dist强制走 ZIP 包,比 Git 克隆快且干净;国内网络慢时,先配镜像:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 装完必须进项目根目录运行
php init,选 Development 或 Production —— 高级模板不跑这步,environments/dev/frontend/web/index.php就是空的占位符,访问直接抛InvalidConfigException
require 和 require-dev 混用会导致生产环境崩溃
误把 yiisoft/yii2-debug 写进 require,上线后它会在每个请求里加载全部调试类,拖慢响应,还可能暴露 /debug/default/view 这类敏感路径;反过来,若把 phpunit/phpunit 错塞进 require,CI 流水线用 composer install --no-dev 时反而会因依赖冲突失败。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 生产依赖只放
require:如yiisoft/yii2、yiisoft/yii2-redis、ext-pdo_mysql - 开发依赖只放
require-dev:如yiisoft/yii2-debug、phpunit/phpunit、codeception/codeception - 验证归属:运行
composer show查生产包,composer show --dev查开发包
扩展装上了,Class not found?那是没注册模块
执行 composer require yiisoft/yii2-gii 成功,不代表 /index.php?r=gii 就能打开。Composer 只负责把代码放进 vendor/ 并更新 autoload.php;能否被 Yii 实例化,取决于是否在配置中声明了 modules 或 components。
-
yii2-gii必须在config/web.php的modules里显式配:'gii' => ['class' => 'yii\gii\Module'],并加到'bootstrap' => ['gii'] -
yii2-debug同理:'debug' => ['class' => 'yii\debug\Module'],且需确保allowedIPs包含当前 IP(如['127.0.0.1', '::1']) - 别手改
composer.json再composer update—— 容易触发意外升级,比如把yiisoft/yii2升到 2.1.x,而它不兼容new yii\base\Component()的旧写法
入口文件路径和 autoload.php 错一位,整个项目就挂
高级模板中,frontend/web/index.php 的第一行必须是 require __DIR__ . '/../../vendor/autoload.php';,basic 模板则是 require __DIR__ . '/../vendor/autoload.php';。少一个 ..,vendor/autoload.php 就加载失败,所有类都报 Class not found。
- 检查方法:进入
web/目录,执行ls ../vendor/autoload.php(basic)或ls ../../vendor/autoload.php(advanced),确认路径存在 - 别手动编辑或复制
autoload.php—— 它由 Composer 自动重写,改了也没用 - 如果改过
psr-4映射或加了新类库,可运行composer dump-autoload -o重建优化映射
最常被忽略的点是:cookieValidationKey 没设、runtime/ 不可写、PHP 缺 mbstring 或 pdo 扩展——这些都不是 Composer 能解决的问题,但它们会让 Composer 装好的一切彻底失效。

















