Composer install卡在Resolving dependencies并非网络问题,而是PHP内存不足、Xdebug启用、platform不匹配或旧lock文件导致;镜像配置需严格满足键名repo.packagist、type为composer、url以/结尾,并用composer config -g repo.packagist和composer install -vvv双重验证是否生效。

composer install 卡在 Resolving dependencies 或下载不动,不是 Yii 扩展本身的问题,而是 Composer 默认还在直连 packagist.org——换镜像只是第一步,光配了源不等于就快了。
确认镜像是否真生效,别被假象骗了
执行 composer config -g repo.packagist,输出必须是类似 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} 的完整 JSON。空、null、或仍是 https://packagist.org,说明配置根本没写进去。
常见失效原因:
-
composer config -g repos.packagist(多了一个s)→ 静默无效 - URL 少了末尾
/→ 部分 Composer 2.2+ 版本会 404 后自动 fallback 到官方源 - 用了 HTTP 而非 HTTPS → Composer 2.0+ 默认拒绝
- 项目根目录下
composer.json里已有repositories字段 → 全局配置被覆盖
验证是否真走镜像:加 -vvv 运行 composer install,看日志里请求的域名是不是 mirrors.aliyun.com。
Yii 扩展慢的真正元凶:fxp-asset 插件和 platform 不匹配
旧版 Yii2 项目常依赖 fxp/composer-asset-plugin,它会拉 Node.js、跑临时进程、触发大量 Bower 请求,composer install 时间直接翻 3–5 倍。这不是网络问题,是设计缺陷。
正确做法是禁用它,改用纯 Composer 方式:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 在
composer.json的"config"下加:"fxp-asset": {"enabled": false} - 同时在
"repositories"里加:{"type": "composer", "url": "https://asset-packagist.cn"} - 删掉
"replace"里所有"bower-asset/*"的声明,否则 Composer 会跳过安装 - 确保
frontend/config/main.php和backend/config/main.php中有:'@bower' => '@vendor/bower-asset'
另外,yii2-app-advanced 要求 PHP >=7.4,但你本地可能是 7.3。别急着升级 PHP,加 --ignore-platform-reqs 就能绕过检查,否则 create-project 直接退出。
并发下载和内存限制,两个关键参数必须调
Composer 默认并发数只有 3,http-max-concurrent-downloads 设成 8–10 才能压满带宽:
- 执行
composer config -g http-max-concurrent-downloads 10 - 别设成 20:高并发可能触发
file_put_contents(): failed to open stream - 如果卡在
Resolving dependencies,大概率是 PHP 内存不够,临时加COMPOSER_MEMORY_LIMIT=-1再试 - 启用 Xdebug 会让解析慢 5–10 倍,用
php -d xdebug.mode=off $(which composer) install临时禁用
注意:parallel-downloads 已弃用,设了也不生效;hirak/prestissimo 在 Composer 2.x 中已失效,必须卸载:composer global remove hirak/prestissimo。
已有项目重装时,缓存和 lock 文件最易踩坑
换了镜像后首次运行 composer install,很可能报 hash 校验失败。这不是镜像问题,是旧 composer.lock 里记录的是国外源的包哈希。
- 删掉
vendor/和composer.lock,再跑composer install --no-cache - CI 或宝塔环境要注意:全局配置写在当前用户家目录,但实际执行命令的可能是
www或jenkins用户,得用对应用户身份重新配 - 公司内网若屏蔽
mirrors.aliyun.com,浏览器直接访问测试;不行就加 hosts:118.31.67.52 mirrors.aliyun.com
最关键的其实是:别信“配了镜像就万事大吉”。Resolving dependencies 阶段完全不走网络,但对 PHP 环境极其敏感——内存、Xdebug、platform、lock 文件,任何一个不对,都会让安装卡住不动,且毫无提示。

















