答案是连接报错主因在系统网络链路异常而非composer本身故障,须用curl -i验证镜像根路径(末尾带/)是否返回http/2 200或http/1.1 200;403/502/卡住说明网关拦截,unknown host表明dns污染,且项目级repositories字段会彻底屏蔽全局配置。

连接报错不是 Composer 坏了,而是请求根本没发出去、或发出去后被网关/防火墙/代理/证书层主动拒绝或重置——得从系统网络链路一层层往下查,不能只改 composer.json 或重装。
curl -I 验证镜像源是否真通(别跳过这步)
Composer 不输出 HTTP 状态码,Connection refused、502 Bad Gateway、卡住或 unknown host 全靠手动验证。必须用 curl -I 测镜像根路径,且 URL 末尾带 /:
-
curl -I https://mirrors.aliyun.com/composer/→ 应返回HTTP/2 200或HTTP/1.1 200 - 返回
403 Forbidden、502 Bad Gateway或长时间无响应 → 镜像后端被拦截或已宕机,立刻换源 - 返回
unknown host→ DNS 污染,不是 Composer 配错了,要换系统 DNS 或用--resolve强制解析 - 测
https://packagist.org没意义——它在国内基本不可达,测了只会误导你调本地配置
composer config -g repo.packagist 输出必须是完整 JSON
配置写错会静默失效,不报错也不起作用。运行 composer config -g repo.packagist 后,输出必须严格符合以下格式:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- ✅ 正确:
{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - ❌ 错误:空、
null、"https://packagist.org"、少斜杠(https://mirrors.aliyun.com/composer)、漏type字段、键名写成repos.packagist或repo.packagist.org - 项目级
repositories字段会彻底屏蔽全局配置——哪怕只写"repositories": [],也要进项目目录删掉或改成{},再用composer config repo.packagist composer https://...单独配
清理残留代理、hosts 和缓存
浏览器能打开镜像站 ≠ Composer 能连上,因为 Composer 严格走系统级网络设置,而浏览器可能绕过代理或用不同 DNS:
- 查代理:Linux/macOS 运行
env | grep -i proxy,Windows 运行set | findstr -i proxy;非空则临时清空:unset HTTP_PROXY HTTPS_PROXY或set HTTP_PROXY= && set HTTPS_PROXY= - 查
/etc/hosts(Linux/macOS)或C:\Windows\System32\drivers\etc\hosts(Windows)是否硬绑了mirrors.aliyun.com到错误 IP - 清缓存:
composer clear-cache必须做——旧失败记录还在,重试照样走原地址 - 某些 CI/宝塔环境用
root配的全局镜像,但实际执行的是www用户,得用sudo -u www composer config -g repo.packagist composer https://...
CA 证书过期会导致 TLS 握手卡死,不报 SSL 错误只卡在 “Loading…”
现象是 curl -v https://mirrors.aliyun.com/composer/ 卡在 * TLS handshake 阶段。这不是网络不通,是 PHP 的证书链失效:
- 去 https://www.php.cn/link/5fe4dadcdb001d8566cd20e6d8a20251 下载最新
cacert.pem - 在
php.ini中设两处:openssl.cafile=/path/to/cacert.pem和curl.cainfo=/path/to/cacert.pem - CLI 模式也要 reload:重开终端,或
sudo systemctl restart php-fpm - 企业内网若走中间人代理,可临时调试:
composer config -g secure-http false+composer config -g cafile /dev/null(仅限调试!)
最常被忽略的是:URL 少斜杠、repositories 字段存在即屏蔽全局、以及缓存里存着旧元数据导致反复 fallback 到失效源——这三处一错,换十个镜像都白搭。










