必须换国内镜像源,否则composer install大概率卡在downloading;正确命令为composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,需严格满足键名、type值和末尾斜杠三要素,且必须执行composer clear-cache验证生效。

换镜像源是必须做的第一步,不换源其他所有优化基本无效。国内直连 packagist.org 不是“有点慢”,而是 DNS 解析常超时、TLS 握手卡顿、首字节延迟动辄 300ms+,composer install 卡在 Downloading 阶段,90% 是这个原因。
镜像配置命令写对了吗?
这条命令极易静默失败,且不报错,必须同时满足三个硬条件:
-
repo.packagist不能写成repos.packagist(多一个s就彻底忽略) - 中间必须带
composer这个 type:正确写法是composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - URL 必须以
/结尾:https://mirrors.aliyun.com/composer/✅;少斜杠会拼接出错,返回404
验证是否生效:composer config -g repo.packagist 输出必须是完整 JSON 对象,例如 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。空、null 或仍含 packagist.org,说明没写进去。
换源后为什么还卡在 downloading?
最常被跳过的一步:composer clear-cache 没执行。缓存里还存着旧的 packages.json 和元数据,Composer 会优先读缓存,哪怕配置已改,它仍试图从旧地址拉校验信息,结果卡在 DNS 或 TLS 握手。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 执行
composer clear-cache -v看实际删了什么,确认清理动作真实发生 - 项目级
composer.json中若定义了repositories字段,会直接覆盖全局配置;用composer config --list --global和composer config --list对比确认实际生效的是哪个 - 宝塔、CI 或计划任务以
www用户运行,但composer config -g写的是root配置(路径为/root/.composer/config.json),www根本读不到;应切到对应用户下执行:sudo -u www composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
并发下载和超时参数怎么设才有效?
parallel-downloads 已被弃用,Composer 2.2+ 只认 http-max-concurrent-downloads,设值推荐 8–10:
composer config -g http-max-concurrent-downloads 10- 必须同步加大超时:
composer config -g http.timeout 300和composer config -g process-timeout 3600 -
http-max-concurrent-downloads只对composer install有效,对composer update几乎无用——依赖图计算本身是串行的 - 设成 20 容易触发本地文件竞争或镜像限流,尤其在企业网络或低配机器上
Resolving dependencies 卡住跟镜像无关
这个阶段完全不走网络,是 Composer 在本地穷举满足所有约束的版本组合。常见真实瓶颈:
-
COMPOSER_MEMORY_LIMIT=-1临时提高内存限制:默认 128M 在解析复杂依赖图时经常不够 - Xdebug 启用中会让
Resolving dependencies慢 5–10 倍,用php -d xdebug.mode=off $(which composer) install临时禁用 -
platform配置与实际 PHP 版本不匹配(如"php": "7.4"却在 PHP 8.2 上运行),触发降级查找逻辑 -
composer.lock里残留已下线包的引用,删掉vendor/和composer.lock,再跑composer install --no-cache
真正容易被忽略的点:镜像只加速下载,不解决本地求解、I/O 或 PHP 扩展异常。看到卡在 Resolving dependencies,第一反应不该是换源,而是查内存、关 Xdebug、核对 PHP 版本。










