确认镜像源是否生效需查两处:composer config -g repo.packagist 输出必须为标准 json 格式且含阿里云地址;composer install -vvv 日志末尾 reading packages.json 的 url 必须含 aliyun 或 tencent,否则已 fallback。

装包卡住,八成不是网络差,而是镜像没生效、缓存没清、或 Composer 正在本地暴力穷举版本——先看日志停在哪一行,再决定是改配置、调参数,还是砍依赖。
怎么确认镜像源是否真生效
很多人跑了 composer config -g repo.packagist 就以为换源成功,但实际仍走 packagist.org。关键看两处:
- 运行
composer config -g repo.packagist,输出必须是{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}这种格式;若为空、是旧版嵌套结构(如{"packagist.org": {...}}),说明配置失败 - 执行
composer install -vvv,翻到最后几行,找Reading packages.json from cache后面的 URL —— 必须含aliyun或tencent,否则 fallback 了 - 常见坑:
repos.packagist写成repo.packagist(少个s),或项目级composer.json里有repositories覆盖了全局配置
卡在 “Resolving dependencies” 怎么办
这不是在下载,是在本地 CPU 算版本组合。一旦停在这,基本和网络无关,而是约束太松或 PHP 版本不匹配:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 检查
composer.json:删掉"minimum-stability": "dev",避免拉取大量不稳定分支 - 收紧 PHP 版本声明,比如把
"php": ">=7.4"改成"php": "^8.1",能跳过几百个包的兼容性元数据扫描 - 禁用 xdebug:它会让 SAT 求解器慢 3–5 倍;临时关掉:
php -d zend_extension= -d xdebug.mode=off /usr/bin/composer install - 确保
composer.lock已提交并存在——没有 lock 文件,install行为等同于update
卡在 “Downloading” 或 “Installing dependencies”
这时才真正涉及网络和 I/O,但问题根源常被误判:
- 先验证系统层是否通:跑
curl -I https://mirrors.aliyun.com/composer/packages.json,如果也卡,说明是 DNS 缓存污染(macOS 执行sudo dscacheutil -flushcache)或 OpenSSL 版本太老(CentOS 7 的 1.0.2 不支持 TLS 1.2) - 启用并行下载:
composer config -g parallel-downloads 10(默认是 3,太保守);若报file_put_contents(/tmp/): failed to open stream,说明并发太高,降到 6 - 清缓存必做:
composer clear-cache,否则旧包仍走官方源;严重时连vendor/和composer.lock一起删掉重来 - 私有 Git 包卡住?改 HTTPS 克隆:
"https://github.com/user/repo.git"替代"git@github.com:user/repo.git",或设GIT_SSH_COMMAND="ssh -o ConnectTimeout=10"
为什么换了镜像还慢?几个隐蔽但致命的点
很多提速操作只做一半,结果白忙活:
-
--classmap-authoritative在 CI 构建中能提速,但在开发环境启用会导致新增类不被识别——它不会 fallback 到文件扫描,只认 classmap 里的路径 -
composer install --no-dev --prefer-dist --optimize-autoloader是生产部署黄金组合,但漏掉--no-scripts可能让 post-install-cmd 脚本拖慢几十秒 - Docker 构建时,别在挂载卷里跑
composer install;vendor/应放在命名卷或本地 SSD 上,否则 I/O 成瓶颈 - CI 中永远用
composer install --no-interaction,别用update—— lock 文件已验证过,重算依赖图纯属浪费
最常被忽略的是:Composer 卡住时,90% 的时间其实花在本地解析和文件操作上,而不是网络请求。盯住 -vvv 日志最后一行,比反复换源更管用。










