Composer全局镜像配置生效必须同时满足三要素:键名repo.packagist(单数)、type值显式为composer、URL以https://开头且末尾带/,缺一则静默回退官方源。

直接配 composer config -g repo.packagist 就行,但必须严格满足三要素:键名是 repo.packagist(单数、不能多写 s),type 值显式写 composer,URL 末尾带 /。其他所谓“自动切换插件”在 Composer 2.2+ 中基本无效,也不被维护。
为什么 composer config -g repo.packagist 没生效?
不是网络问题,大概率是命令写错或被覆盖:
-
repo.packagist写成repos.packagist或repositories.packagist.org—— 前者静默失败,后者在部分新版中会被忽略 - 漏掉
composer这个 type 参数,命令变成composer config -g repo.packagist https://mirrors.aliyun.com/composer/,结果 fallback 到官方源 - URL 缺末尾斜杠:
https://mirrors.aliyun.com/composer会拼成/composerpackages.json,直接 404 - 项目根目录
composer.json里已有repositories字段,它优先级高于全局配置,会完全屏蔽你的设置 - 没执行
composer clear-cache,旧元数据还在缓存里,install/update 仍走原始源
阿里云、腾讯云、清华源怎么配才不报错?
所有国内镜像 URL 必须用 HTTPS、末尾加 /、显式声明 type: "composer":
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 阿里云(最稳):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 腾讯云(fallback 友好):
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/ - 清华源(带宽足,但偶有同步延迟):
composer config -g repo.packagist composer https://mirrors.tuna.tsinghua.edu.cn/composer/ - 华为云:
composer config -g repo.packagist composer https://mirrors.huaweicloud.com/repository/php/
别用 http:// 开头——Composer 2.x 默认拒绝非 HTTPS 源;也别加 /packages.json 后缀,那是 Composer 自己拼的。
临时换源调试,不改任何配置的三种方式
适合 CI 脚本、帮同事验证、或只跑一次 create-project:
- 单次命令指定源:
composer create-project laravel/laravel myapp -r https://mirrors.aliyun.com/composer/(注意是-r,不是--repository-url) - 仅当前项目生效(不写进
composer.json):composer config repo.packagist composer https://mirrors.ustc.edu.cn/composer/(去掉-g) - 调试真实请求地址:
composer update -vvv --repository=https://mirrors.cloud.tencent.com/composer/,日志第一行会显示实际下载 URL,一眼确认是否走对了源
最容易被忽略的是:项目级 repositories 字段一旦存在,全局配置就完全失效;而很多人删了它却忘了 clear-cache,导致行为和预期不符。镜像只加速 packagist.org 上的 PHP 包,GitHub 直链、私有 Git 仓库、ext-* 扩展编译都不受其影响。

















