“Connection refused”是请求未发出,主因DNS解析失败、443端口被拦截、镜像URL拼错或代理干扰;需先ping验证DNS,再curl检查连通性与TLS握手,并确保镜像配置键名正确、URL以/结尾、执行clear-cache。

“Connection refused”不是 Composer 配置错了,是请求压根没发出去——DNS 解析失败、443 端口被拦截、镜像 URL 拼错或代理静默干扰,这四类问题占了 95% 以上。
ping packagist.org 返回 unknown host 怎么办
这是最典型的 DNS 失效现象,和 composer.json、镜像源、PHP 版本全无关。Composer 连域名都解析不出来,根本不会走到 HTTP 请求那步。
- 立刻验证:
ping packagist.org,若返回unknown host,说明系统 DNS 不可用 - Linux/macOS:编辑
/etc/resolv.conf,加一行nameserver 8.8.8.8(或114.114.114.114) - Windows:进「网络适配器设置 → IPv4 属性 → 手动填 DNS 服务器」
- 别信
composer config -g repo.packagist输出的镜像地址——DNS 不通时,它照样会 fallback 到官方源并报错
curl -v https://mirrors.aliyun.com/composer/ 卡在 * Connected to
说明 TCP 连接建不起来,常见于企业防火墙封 443、NAT 设备异常、或本地杀软(如火绒、360)劫持 HTTPS 流量。浏览器能打开不代表 Composer 能通,因为 PHP 的 cURL 默认走系统证书链,而浏览器有自己的信任库。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 先确认是否真卡在这步:
curl -v https://mirrors.aliyun.com/composer/ 2>&1 | head -n 15 - 若停在
* Connected to mirrors.aliyun.com (119.3.217.17) port 443 (#0)后无响应,就是网络层不通 - 临时绕过连接复用干扰(NAT 环境高发):
CURL_OPTIONS="--no-keepalive" composer install(Linux/macOS) - Windows PowerShell:
$env:CURL_OPTIONS="--no-keepalive"; composer install - 强制走 IPv4(防 IPv6 黑洞):
CURL_IPRESOLVE=4 composer install
composer config -g repo.packagist 配了但没生效
配置写错一个字符,Composer 就会静默忽略整条设置,然后 fallback 到 https://packagist.org——它不报错,只默默失败。
- 必须满足三个硬条件:
– 键名只能是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或仍是https://packagist.org,说明配置根本没存成功 - 项目目录下有
"repositories": []字段?全局配置直接失效——不是优先级低,是被跳过
换镜像后还是报 Connection refused 或重置
缓存没清、CA 证书路径错、或 vendor/ 目录被 sudo 污染,都会让 Composer 反复重试同一失败路径,看起来像“网络一直不通”。
- 先清缓存:
composer clear-cache;Windows 用户还得手动删%LOCALAPPDATA%\Composer\cache - 检查 PHP 的
curl.cainfo是否指向真实存在的cacert.pem:php --ini查php.ini路径,再打开文件确认curl.cainfo值 - 查
vendor/和composer.lock归属:ls -ld vendor/ composer.lock,若属主是root,执行:sudo chown -R $USER:$USER vendor/ composer.lock - 别用
chmod 777—— Composer 不认权限位,只认文件属主
真正容易被忽略的是:换源之后不 clear-cache,旧失败记录还在;composer.json 里写了空 repositories 数组,全局镜像就彻底失效;还有 curl.cainfo 指向了一个不存在的路径,证书校验永远失败却没有任何提示。

















