composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 是唯一生效写法,须满足三条件:键名严格为 repo.packagist(单数、小写)、type 值必须为 composer、url 必须 https 且末尾带 /;验证需 composer config -g repo.packagist 输出完整 json 对象。

composer config -g repo.packagist 命令为什么总不生效
根本不是网络慢,而是命令漏了三个硬性条件,Composer 2.x 遇到任一错误就静默 fallback 到 https://packagist.org,不报错、不提示、也不警告。
-
repo.packagist必须是单数键名 —— 写成repos.packagist、packagist.org或大小写混用(如Repo.Packagist)全无效 -
composer是必需的type值,不是注释,不能省略,也不能替换成https或其他字符串 - URL 必须是 HTTPS 且末尾带
/:https://mirrors.aliyun.com/composer/✅,https://mirrors.aliyun.com/composer❌(会拼出/composerpackages.json导致 404) - 必须加
-g,否则只改当前目录下的composer.json,换项目或新开终端就失效
正确命令只有一种写法:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
怎么确认镜像真的在用
别信“执行完就 OK”,命令没报错 ≠ 生效。唯一可靠验证方式是查配置值本身:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(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,输出必须是完整 JSON 对象,例如:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 如果返回空、
null、Key "repo.packagist" does not exist,或只有一行 URL(比如https://packagist.org),说明根本没写进去 - 辅助验证:运行
composer install -vvv 2>&1 | grep -i 'mirrors\.aliyun\|tuna\.tsinghua',日志里必须出现镜像域名;若还看到https://packagist.org/packages.json或/p/路径,说明仍在直连官方源
项目级配置比全局更可靠
全局配置写在 ~/.composer/config.json,但宝塔后台用 www 用户、GitHub Actions 用 runner 用户、Docker 容器常以非登录用户运行——它们根本读不到你终端配的配置。
- 进项目根目录(确保有
composer.json),执行:composer config repo.packagist composer https://mirrors.aliyun.com/composer/(注意不加-g) - 该命令会自动向
composer.json的repositories字段写入"packagist": {"type": "composer", "url": "..."} - 如果
repositories原本是数组格式([]),命令会失败;需先手动改成对象{}再重试 - 切勿手写
"packagist.org": false—— 这会让 Composer 屏蔽php、ext-json等基础平台依赖校验,直接导致require失败
换源后依然卡在 “Loading composer repositories”
镜像只加速元数据下载,不参与依赖解析。卡在这里和镜像无关,但大概率是旧缓存和旧 composer.lock 在捣鬼。
- 先清缓存:
composer clear-cache - 删掉整个
vendor/目录和composer.lock - 再运行
composer install(不是update)——只有install会重新基于当前镜像源 +composer.json生成新lock文件 - 如果跳过清理,
composer.lock里仍存着packagist.org的 dist URL 和 hash,下载时还是会发请求到海外源
最易被忽略的一点:Windows 用户改完全局配置后要重启终端,否则 Composer 缓存不会刷新;CI 流水线中若用 sudo composer config -g,可能写进了 root 配置,但构建时用的是 runner 用户,压根读不到。










