必须用 composer create-project 安装 Yii2,不能用 composer require yiisoft/yii2——后者仅安装核心类库,缺失 web/index.php、config 目录、yii 命令等关键结构,项目无法运行。

必须用 create-project,别碰 require yiisoft/yii2
直接 composer require yiisoft/yii2 只会把核心类库拉进 vendor/,但没 web/index.php、没 config/ 目录结构、没 yii 命令行工具——访问必然 404,Class 'Yii' not found 是最常见报错。大型项目更不能这么干,因为缺失的不只是文件,还有环境隔离逻辑、多应用路由注册、AssetBundle 自动映射等隐性依赖。
正确命令是:
-
composer create-project --prefer-dist yiisoft/yii2-app-advanced myproject(高级版,前后端分离) -
composer create-project --prefer-dist yiisoft/yii2-app-basic myproject(基础版,轻量 API 或 MVP 验证)
包名必须写全 yiisoft/yii2-app-advanced,漏掉 yiisoft/ 或错写成 yii2-advanced 都会失败;加 --prefer-dist 强制走 ZIP 包,避免 Git clone 卡在 GitHub rate limit。
国内安装卡住?先换镜像,再跳过脚本
卡在 Cloning into 'xxx'、failed to open stream、或 yii2-auth-client 超时,基本不是你网络差,而是 Packagist 国内直连失败。硬等没用,得主动干预:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 换阿里云镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 加
--no-scripts跳过 post-install 脚本(它们会调 GitHub API):composer create-project --no-scripts --prefer-dist yiisoft/yii2-app-advanced myproject - 装完进目录手动跑:
php init --env=Development --overwrite=All
别信“装完就能跑”——--no-scripts 是国内环境下的事实标准操作,否则 init 脚本可能因权限或插件缺失中断(fxp/composer-asset-plugin 已废弃,不用装)。
php init 后还 404?检查三处硬性路径
装完跑 php init,但浏览器打开仍是 404 或白屏,90% 是 Web 服务器没指向对位置,或关键配置为空:
-
Web 根目录必须是
frontend/web或backend/web,不是项目根目录:Nginx 的root、Apache 的DocumentRoot、PHP 内置服务器的启动路径,都得落在web/子目录下;php -S localhost:8080 router.php也得先cd frontend/web -
cookieValidationKey必须设,且不能留空或用示例值:打开frontend/config/main-local.php和backend/config/main-local.php,在'request' => []里补上'cookieValidationKey' => '32位以上随机字符串';生产环境务必用yii\helpers\BaseString::randomString(32)生成并存入环境变量 -
runtime/和assets/目录必须可写:Linux/macOS 执行chmod 777 runtime assets(上线前改回 755 并限定用户);Windows 下注意防病毒软件拦截或路径含空格(别建在C:\Program Files\)
数据库迁移和环境适配不能跳过
大型项目依赖完整初始化流程,漏一步就卡在登录页或后台空白:
- 修改
common/config/main-local.php中的db组件:'dsn' => 'mysql:host=localhost;dbname=myapp',确保 MySQL 服务已启动且库已创建 - 运行迁移:
php yii migrate(前端)或php yii migrate --migrationPath=@backend/migrations(后台) - 高级版有两个独立入口,
frontend和backend的cookieValidationKey、urlManager规则、甚至bootstrap模块都需分别配,不能共用一份配置
真正麻烦的不是命令敲不对,而是把“搭一个能跑的 Yii 应用”和“引入某个 Yii 组件”混为一谈——前者必须走模板骨架,后者才适合 require 单个包。大型项目尤其如此,目录结构、环境分层、命令注册机制,全靠 create-project 一次性落地。

















