必须严格执行三条命令:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/;清缓存(composer clear-cache)、删 vendor 和 composer.lock;再 install,否则镜像不生效。

composer config -g repo.packagist 命令必须带斜杠和 type 参数
这条命令写错一个字符,镜像就完全不生效,而且不报错——你只会看到 composer install 还在卡在 Downloading。必须严格写成:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/。
三个硬性条件缺一不可:
-
repo.packagist键名不能多字母(比如repos.packagist或repositories),Composer 2.x 内部只认这个 exact key -
composer是 type 值,不是可选参数,也不是注释;漏掉它会导致写入纯字符串而非仓库对象 - URL 必须以
https://开头、且结尾带/;少斜杠会拼出/composerpackages.json这类错误路径,直接返回 404
验证是否成功:运行 composer config -g repo.packagist,输出必须是完整 JSON,形如 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。空、null 或报错,说明没写进去。
项目级 repositories 配置会覆盖全局,且格式敏感
哪怕你刚配好全局镜像,只要当前目录下 composer.json 里有 repositories 字段,就会被强制覆盖——而且不提示、不警告。
常见陷阱:
- 如果
repositories是数组(例如"repositories": []),执行composer config repo.packagist ...会直接报错,必须手动改成对象格式:"repositories": { "packagist": { ... } } - 手写
"packagist.org": false放在repositories里,会彻底禁用基础索引,连laravel/framework都装不上;正确做法是把它放在composer.json根节点 - 已有私有源时,别用命令全量替换
repositories;应手动编辑,把阿里云镜像作为"packagist"子项加入,保留其他源
检查是否被覆盖:运行 composer config -l | grep repositories,或直接打开 composer.json 搜索 repositories。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
换镜像后必须清缓存 + 重装,否则 hash 不匹配
镜像只加速新请求,旧缓存里的元数据(比如 packages.json)仍指向 packagist.org,Composer 会继续用它拉 provider 列表,结果还是慢速回源。
关键操作顺序不能乱:
- 先执行
composer clear-cache,清掉所有旧索引和 dist URL 缓存 - 删掉
vendor/和composer.lock(已有 lock 文件时尤其重要) - 再跑
composer install,才会从新镜像站重新拉取完整索引和包
如果不删 composer.lock,切换镜像后会出现 Hash does not match 错误——因为旧 lock 记录的是官方源的 dist URL 和哈希,而阿里云等镜像站的 ZIP 路径与官方不同。
parallel-downloads 设为 10 是多数场景甜点值
这个参数只对 composer install 起作用,本质是并发发起 HTTP 下载请求。默认值 5 基本等于单线程,对国内镜像太保守。
实测建议:
-
composer config -g parallel-downloads 10是安全甜点值,能压满千兆宽带,极少触发临时文件竞争错误 - 设成 15 在高配环境可行,但在 Docker 或低内存 CI 环境容易报
file_put_contents(/tmp/): failed to open stream - 设成 20+ 几乎必然失败;验证是否启用:加
-vvv运行composer install,日志里出现类似Downloading ... (10 concurrent)的提示才算生效
注意:parallel-downloads 只加速 tarball 下载,不影响元数据检索——所以必须和 repo.packagist 镜像配置配合才明显。
composer.lock 未同步这几个地方。很多人配完镜像还慢,问题不在源本身,而在这些细节没闭环。

















