答案是三要素缺一不可:键名必须为单数repo.packagist、type值必须显式写composer、url须https且以/结尾;任一缺失均静默回退官方源且不报错。

配国内镜像源不是“锦上添花”,是 Composer 在国内能跑起来的前提。不配,composer install 卡在 Loading composer repositories 是常态,不是你网差,是 packagist.org 物理延迟+TLS握手慢导致元数据根本拉不下来。
composer config -g repo.packagist 为什么总不生效
90% 的失败不是网络问题,是命令漏了三个硬性条件,而 Composer 2.x 会静默 fallback 到 https://packagist.org,不报错、不提示、不警告。
-
repo.packagist必须是单数,写成repos.packagist或repositories.packagist就完全被忽略 - 中间的
composer是必填的type值,不是注释,也不是可选参数;漏掉它,配置直接作废 - URL 必须是 HTTPS 且末尾带
/,例如https://mirrors.aliyun.com/composer/✅,少斜杠会拼出/composerpackages.json导致 404
验证是否真写进去了?只看这一条命令:composer config -g repo.packagist。输出必须是完整 JSON,比如 {"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。空、null、报错、或只返回字符串,都说明没配成功。
项目级配置比全局更可靠
全局配置写在 ~/.composer/config.json,但在宝塔(www 用户)、GitHub Actions(runner 用户)、Docker 容器里根本读不到——这不是 bug,是权限隔离的正常行为。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先进入含
composer.json的项目根目录 - 执行:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(注意:不加-g) - 该命令会自动识别
composer.json中已有的repositories结构:如果是对象,就写入"packagist"键;如果是数组,就追加新项 - 千万别手动写
"packagist.org": false—— 这会让php、ext-json等平台依赖校验失败
改完必须删掉 vendor/ 和 composer.lock,再运行 composer install(不是 update)。否则 lock 文件里存的还是旧地址,Composer 会照着旧 URL 去下载,镜像形同虚设。
验证镜像是否真在用
别信 composer config -g 的输出,它只告诉你“你写了什么”,不等于 Composer 正在用它。
- 清缓存:
composer clear-cache - 删干净:
rm -rf vendor composer.lock(Windows 用rd /s/q vendor && del composer.lock) - 重装并观察日志:
composer install -vvv 2>&1 | grep -i 'mirrors\.aliyun\|tuna\.tsinghua' - 重点找这行:
Reading packages.json from cache at .../https---mirrors-aliyun-com-composer/packages.json
如果日志里还出现 https://packagist.org/packages.json,说明要么 composer.json 里写了 "packagist.org": false 却没配对的 "packagist" 镜像,要么 repositories 字段结构异常(比如是数组但第一项不是 {"packagist.org": false})。
最易被忽略的一点:镜像只加速 packagist.org 上的包,GitHub 直连、package 类型仓库、PHP 扩展(ext-xxx)校验、以及 create-project 的 Git clone 步骤,全都不走镜像。卡在这些环节,换源没用。










