connection refused 是请求根本未发出,主因是 dns 解析失败、443 端口被拦截、代理错配或镜像 url 路径错误;浏览器可访问但 composer 报错,多因 https 证书校验失败(如企业中间人代理),需分三步排查:dns → 连通性 → tls 握手,并确保镜像配置键名正确、url 以 / 结尾、执行 clear-cache。

Connection refused 是请求根本没发出去
不是 Composer 版本低,也不是 PHP cURL 扩展没开——只要 php -m | grep curl 能输出结果,就说明扩展正常。真正卡在底层:DNS 解不出来、443 端口被防火墙拦、代理配置错位、或镜像 URL 拼错了路径。浏览器能打开 https://packagist.org 但 composer install 报 Connection refused,大概率是 HTTPS 证书校验失败(比如企业中间人代理篡改了证书),导致连接被静默中断。
验证连通性必须分三步走
别急着改配置,先确认问题在哪一层:
-
ping packagist.org返回unknown host→ DNS 失效,换8.8.8.8或114.114.114.114 -
curl -I https://packagist.org卡住或报Failed to connect→ 防火墙/杀软(如火绒、360)或企业网关拦截了 443 -
curl -v https://mirrors.aliyun.com/composer/卡在TLS handshake→ 强制 IPv4:CURL_IPRESOLVE=4 composer install(Linux/macOS)
镜像配置写错一个字符就等于没配
全局设置命令必须严格满足三个条件,缺一不可:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 键名只能是
repo.packagist(不是repos.packagist,也不是repositories) - 中间必须显式传入
composer作为 type 值:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - URL 必须以
/结尾:https://mirrors.aliyun.com/composer/✅,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 -g secure-http false+composer config -g cafile /dev/null - 生产可用方案:导出企业根证书(如
company-ca.crt),再执行composer config -g cafile /path/to/company-ca.crt - 若走 HTTP 代理,必须用
http-proxy键名:composer config -g http-proxy http://127.0.0.1:8080(注意不是proxy)
最常被忽略的一点:换源后不 composer clear-cache,旧失败缓存还在,重试照样走原地址——这不是网络问题,是本地状态没清理干净。










