必须配国内镜像源,否则composer install卡在Downloading或Loading repositories是常态,本质是默认连packagist.org导致DNS慢、TLS卡顿或超时;需执行composer config -g repo.packagist验证输出是否为https://mirrors.aliyun.com/composer/,并确保命令含-g、正确键名、type值及URL末尾斜杠。

必须配国内镜像源,否则 composer install 卡在 Downloading 或 Loading composer repositories 是常态,不是网络问题,是默认连 packagist.org 导致 DNS 解析慢、TLS 握手卡、首字节延迟高甚至超时。
确认当前用的是哪个镜像源
执行 composer config -g repo.packagist,输出应为类似 "https://mirrors.aliyun.com/composer/" 或 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} 的内容。如果为空、null、报错,或仍显示 https://packagist.org,说明没生效。
- 旧版 Composer(1.x)不识别
repo.packagist,需改用composer config -g repos.packagist '{"type":"composer","url":"https://mirrors.aliyun.com/composer/"}' - 项目根目录存在
composer.json且含repositories字段时,全局配置会被覆盖——哪怕只写了"repositories": {}也会屏蔽镜像 - CI/CD 中以
www或runner用户运行命令,而-g写的是当前登录用户的~/.composer/config.json,权限不一致就失效 - 验证是否真走镜像:加
-vvv运行composer install,看日志里下载域名是不是mirrors.aliyun.com等镜像域名
全局配置必须写对三要素
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 这条命令不是“大概对就行”,漏掉任意一个都会静默失败,且不报错:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
-
-g不能省——缺了就只改当前项目composer.json,换目录就失效 -
repo.packagist是唯一合法键名(注意是repo单数,不是repos;也不能写成packagist.org) -
composer是type值,不是可选参数,也不是注释——省略后 Composer 2.0+ 会 fallback 到官方源 -
https://mirrors.aliyun.com/composer/必须用 HTTPS,且末尾斜杠/不能少(少斜杠会拼出/composerpackages.json导致 404)
项目级配置比全局更可靠
进项目根目录,运行 composer config repo.packagist composer https://mirrors.aliyun.com/composer/(去掉 -g)。它会自动在 composer.json 顶层添加或合并 repositories 字段,key 固定为 "packagist"。
- 适合团队协作:配置随代码提交,新人拉完即用,CI 构建无需额外环境变量
- 不会覆盖已有私有源——前提是原
repositories是对象结构(如"repositories": {"packagist": {...}}),不是数组格式 - 如果项目已有
"repositories": [](数组),命令会报错,需先手动改为对象再重试 - 别手写
"packagist.org": false这类字段——它会彻底禁用基础包索引,连laravel/framework都装不上
换源后仍卡在 Resolving dependencies?和镜像无关
镜像只加速下载,不解决依赖解析阶段的卡顿。这个阶段不走网络,但严重受 PHP 环境和依赖结构影响:
- PHP 内存不足(默认 128M 不够)——临时加
COMPOSER_MEMORY_LIMIT=-1再试 - 启用了 xdebug(运行
php -v可确认)——会让解析慢 5–10 倍,用php -d xdebug.mode=off $(which composer) install临时禁用 -
config.platform.php与实际 PHP 版本不匹配(如"php": "7.4"却在 PHP 8.2 上运行),触发降级查找逻辑 -
composer.lock残留已下线包的引用,导致回退搜索——删掉vendor/和composer.lock,再用composer install --no-cache - 大量未锁定版本的
dev包(如"monolog/monolog": "dev-main")或过宽的 PHP 版本约束(如"^7.4 || ^8.0")也会拖慢解析
最常被忽略的一点:镜像同步有延迟,新发布的包可能要等 5–30 分钟才出现在镜像中;别急着关 fallback,新版 Composer 默认会在镜像返回 404 或 503 时自动切回 packagist.org 查一次——这是防同步延迟的保险丝。

















