唯一可靠验证方式是运行 composer config -g repo.packagist,输出必须为完整 JSON(如{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}),空、null、字符串或官方源均失败;再用 composer install -vvv | grep "Downloading" 确认实际请求域名;最后用 curl -v 模拟 Composer 请求头直连镜像端点验证网络通路。

运行 composer config -g repo.packagist 看输出是否为完整 JSON
这是唯一可靠的验证方式,不是看感觉、不是看安装快慢。命令必须带 -g,键名必须是 repo.packagist(单数,不是 repos 或 packagist.org)。输出必须形如:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"}。
常见失败现象:
- 返回空、
null或提示Key "repo.packagist" does not exist→ 没写进去,立刻检查拼写和斜杠 - 只返回字符串(如
"https://mirrors.aliyun.com/composer/")→ 缺type字段,配置不完整 - 返回
{"type":"composer","url":"https://packagist.org"}→ 还在用官方源,镜像未生效
用 composer install -vvv 抓真实请求日志
配置可能“看起来对”,但实际请求仍发往 packagist.org。加 -vvv 后执行 composer install,再过滤下载行为:
composer install -vvv 2>&1 | grep "Downloading"
观察日志中出现的域名:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 看到
mirrors.aliyun.com或mirrors.tuna.tsinghua.edu.cn→ 镜像正在用 - 看到
packagist.org→ 配置被覆盖或未生效(比如项目级composer.json里有"repositories": {}) - 卡在
Resolving dependencies阶段 → 和镜像无关,那是依赖解析逻辑问题
用 curl -v 直连镜像 packages.json 端点
浏览器访问不可靠,很多镜像会根据 User-Agent 拒绝请求。必须模拟 Composer 的真实请求头:
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"
关键看输出里有没有:
-
Connected to mirrors.aliyun.com→ DNS、TLS、路由都通 -
HTTP/2 200+Content-Type: application/json→ 镜像服务正常响应 - 卡住、超时、或出现
Connected to packagist.org→ 本地网络策略(如代理、/etc/hosts、DNS 污染)在干扰
别信 composer diagnose 和 composer validate
这两个命令完全不读镜像配置:
-
composer diagnose强制访问https://packagist.org,哪怕你配了清华源,它也会报连不上官方站——这不是故障,是设计如此 -
composer validate只校验composer.json的语法和结构,对config.json或repositories字段完全无感 - 真正暴露配置问题的命令只有:
composer install --dry-run、composer show -p、或直接跑composer update观察下载域名
composer.json 且含 "repositories": {}(哪怕为空对象),就会屏蔽全局镜像;还有宝塔等环境里 PHP CLI 用户和 Web 用户不一致,导致全局配置根本读不到。

















