composer create-project 是唯一靠谱的安装方式,因其完整复制模板并执行初始化脚本,避免 autoload 缺失、钩子未触发、dev 依赖遗漏等问题,确保 yii 命令可用、debug 面板正常、测试类可加载。

composer create-project 是唯一靠谱的安装方式,手动下载 ZIP 或改 composer.json 后 composer install 会漏 autoload、脚本钩子和 dev 依赖,直接导致 yii 命令不可用、debug 面板白屏、测试类找不到。
为什么 create-project 比 install 更安全
Yii2 模板(尤其是 yii2-app-advanced)不是普通包,它自带初始化逻辑:post-create-project-cmd 自动设别名、生成环境占位符、写入权限;autoload 里声明的 psr-4 映射(如 @app → ./)一旦缺失,Yii::setAlias('@app', ...) 就失效,整个应用启动即报错。
-
create-project会完整复制模板 + 执行全部初始化脚本,一步到位 -
install只装依赖,不跑钩子,也不生成environments/下的配置文件 - 删过
"scripts"或改过"autoload"字段?基本等于重装
yii2-app-advanced 安装失败的三大硬坑
卡在 Cloning into '...'...、报 PHP version not supported、首页 500 —— 这些都不是网络问题,而是模板本身对环境有强约束。
- PHP 版本必须 ≥ 7.4:2.0.48 是最后一个稳定版,但已 EOL;若本地是 PHP 7.3 或更低,命令直接中断
- 默认走 Git 协议拉取子依赖,国内常触发 GitHub rate limit;加
-vvv看日志,确认是否卡在Cloning github.com/yiisoft/yii2.git - 没配国内镜像(如阿里云
https://mirrors.aliyun.com/composer/),resolving dependencies阶段可能超时
推荐命令组合:稳、快、可复现
别信裸命令 composer create-project yiisoft/yii2-app-advanced advanced,它在真实开发机上大概率失败。用下面这组:
composer create-project --prefer-dist --no-scripts yiisoft/yii2-app-advanced advanced-project cd advanced-project php init --env=Development --overwrite=All
-
--prefer-dist强制走 ZIP 包,跳过 Git clone,速度快且不撞 rate limit -
--no-scripts避免因缺少fxp/composer-asset-plugin或权限不足导致初始化中断(该插件早已废弃,不用装) -
php init必须手动跑,--env=Development写入调试配置,--overwrite=All清掉残留的旧index.php或空main-local.php
装完还跑不起来?两个路径必须改
访问 http://localhost/ 404 或白屏,90% 是因为 Web 服务器没指向对位置,或关键配置为空。
- Nginx/Apache 的
root必须设为/path/to/advanced-project/frontend/web(不是项目根目录,也不是backend/web) -
frontend/config/main-local.php中的'cookieValidationKey'不能为空,否则登录页直接 500;临时填'cookieValidationKey' => 'any-random-string'即可 - 高级版里
frontend和backend是两个独立入口,共用common,但数据库、用户表、路由互不感知——改 frontend 的 DB 配置,不会影响 backend
php init 和 web 目录定位。这两步不手动确认,其他所有操作都只是在给错误铺路。










