安装yii2依赖冲突或超时主因是php版本硬约束、asset源不可达、composer.lock失真;应分别用--ignore-platform-reqs绕过版本检查、换asset-packagist.cn镜像并禁用fxp插件、全局配置阿里云源及运行composer update --lock修复锁文件。

安装 Yii2 时遇到依赖冲突或超时,多数不是代码问题,而是环境配置与生态演进不匹配所致。核心矛盾集中在三方面:PHP 版本硬约束、asset 包源不可达、composer.lock 状态失真。对症处理比反复重试更省时间。
PHP 版本不兼容导致直接中断
yii2-app-advanced 等模板默认要求 PHP ≥ 8.0(如 codeception/module-filesystem 3.0.0),若本地为 PHP 7.4,create-project 会立即退出,不进入下载环节。这不是依赖解析失败,而是平台校验前置拦截。
- 开发环境临时绕过:加 --ignore-platform-reqs 参数,例如:
composer create-project --prefer-dist yiisoft/yii2-app-advanced advanced --ignore-platform-reqs - 生产环境必须升级 PHP,或改用兼容分支(如 yii2 v2.0.x + PHP 7.4)
- 也可在 composer.json 的 config.platform 中模拟目标版本,避免影响系统其他项目
Asset 包卡住或报 “No valid bower.json”
本质是旧版 Yii2 尝试通过已废弃的 fxp/composer-asset-plugin 调 GitHub API 拉 Bower 包,但未配 token 或遇限流,返回 403/空响应,被误判为“找不到 bower.json”。
- 彻底禁用 fxp 插件:在 composer.json 的 config 中添加
"fxp-asset": {"enabled": false} - 替换 asset 源为国内镜像:
在 repositories 中加入:{"type": "composer", "url": "https://asset-packagist.cn"} - 删掉 replace 块中所有
bower-asset/*条目,否则 Composer 会跳过安装 - 安装后,在
frontend/config/main.php和backend/config/main.php中注册别名:'@bower' => '@vendor/bower-asset'
Composer 安装卡在 “Resolving dependencies” 或超时
主因是 packagist.org 国内直连不稳定,尤其 create-project 阶段尚未进入项目目录,项目级配置无效,必须全局换源。
- 执行全局镜像命令(推荐阿里云):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 顺手清缓存:
composer clear-cache - 若仍卡住,可加 -vvv 查看具体阻塞点:
composer create-project yiisoft/yii2-app-basic basic --prefer-dist -vvv - 关闭 Xdebug(它会显著拖慢 Composer 解析速度)
composer.lock 冲突或校验失败
Git 合并后出现 标记,或提示 <code>Lock file does not contain required package,说明 lock 文件已损坏,不能手动编辑。
- 先确保 composer.json 已无冲突(git checkout --theirs composer.json)
- 删除当前 composer.lock
- 运行 composer update --lock —— 它只重算依赖树、生成新锁文件,不改动 vendor
- 切勿执行
composer install后删 lock 再重装,易引入不兼容子依赖











