正确输出必须是完整 json 对象:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"};若为纯 url、空、null 或报错,说明配置失效。

composer config -g repo.packagist 输出是否符合三要素
输出不是 URL 就是失效,必须是完整 JSON 对象:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。缺一不可:
-
repo.packagist键名不能拼成repos.packagist或repositories.packagist.org,新版 Composer 2.2+ 静默忽略 -
"type": "composer"必须显式存在,漏掉或写成"type": "composer.org"会导致 fallback 到官方源 -
url必须是 HTTPS 且末尾带/,https://mirrors.aliyun.com/composer(少斜杠)会拼出/composerpackages.json,404
curl -v 模拟真实请求是否命中镜像站
配置写了 ≠ 请求真发过去了。用 curl 复现 Composer 的实际行为:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 执行:
curl -v -H"User-Agent: Composer/2.9.6" -H"Accept: application/json" https://mirrors.aliyun.com/composer/packages.json 2>&1 | grep "Connected to\|HTTP/" - 看到
Connected to mirrors.aliyun.com才算实锤;若出现Connected to packagist.org,说明 DNS、代理、环境变量或项目级repositories覆盖了配置 - 别用浏览器访问
packages.json——多数镜像根据 UA 返回 403,误判为“不可用”
composer show -p -v 日志里是否出现 p2/ 路径
Composer 实际依赖的是 /p2/{vendor}/{package}.json 接口,不是首页或 packages.json。这个路径才是性能瓶颈所在:
- 运行:
composer show -p -v 2>&1 | grep "GET https.*p2/" - 成功响应应含类似:
GET https://mirrors.aliyun.com/composer/p2/monolog/monolog.json - 若日志里全是
packages.json或packagist.org,说明镜像未生效,或该镜像不支持p2/(如部分已停用的旧镜像) - 华为云当前有效地址是
https://repo.huaweicloud.com/repository/php/,不是旧版mirrors.huaweicloud.com
COMPOSER_REPO_PACKAGIST 环境变量是否干扰
这个环境变量优先级最高,会直接覆盖所有配置文件,且 composer config -g 完全查不到:
- Linux/macOS 查::
echo $COMPOSER_REPO_PACKAGIST - Windows 查:
echo %COMPOSER_REPO_PACKAGIST% - 若输出非空(比如
https://packagist.org),那无论config -g显示什么,实际都走这个地址 - 临时禁用验证:
COMPOSER_REPO_PACKAGIST= composer show -p -v 2>&1 | grep "GET https"
config -g 显示正确,但 composer.lock 里存的是旧源 hash,或本地缓存仍指向 packagist.org,必须搭配 composer clear-cache 和 -vvv 日志交叉验证。










