答案是DNS解析失败,需立即更换DNS(如8.8.8.8)、检查hosts文件、切手机热点验证,并排除企业网屏蔽或DNS污染。

“Connection refused”不是 Composer 本身出问题,是请求根本没发出去——DNS 解析失败、443 端口被拦截、镜像 URL 拼错、或企业中间人代理静默中断连接。直接改配置前,先定位卡在哪一层。
ping packagist.org 返回 unknown host 怎么办
这说明 DNS 解析失败,和 Composer 配置、PHP 版本、cURL 扩展都无关。浏览器能打开网页不代表命令行 DNS 正常,因为系统级 DNS 设置可能被绕过或污染。
- 立刻验证:运行
ping packagist.org,如果返回unknown host,就停在这步,别往下试composer install - 临时换 DNS:Linux/macOS 编辑
/etc/resolv.conf加一行nameserver 8.8.8.8;Windows 在网络适配器的 IPv4 属性里手动设 DNS - 检查
/etc/hosts(或C:\Windows\System32\drivers\etc\hosts)是否误写了packagist.org到错误 IP - 用手机热点再试一次:很多企业网会屏蔽
packagist.org和github.com,但热点通常通
curl -v https://mirrors.aliyun.com/composer/ 卡在 TLS handshake
说明 TCP 已连上,但 HTTPS 握手失败。常见于企业网强制中间人代理、系统时间偏差超过 5 分钟、或 CA 证书过期。此时 http.timeout 完全无效,它不参与 TLS 阶段。
- 先确认是否真卡在 TLS:运行
curl -v https://mirrors.aliyun.com/composer/,看最后一行是* Connected to还是* TLS handshake - 强制走 IPv4(绕过 IPv6 不稳定问题):
CURL_IPRESOLVE=4 composer install(Linux/macOS);Windows 可用set CURL_IPRESOLVE=4后再执行 - 检查系统时间:误差 >5 分钟会导致 TLS 握手失败,运行
date确认 - 企业环境要导出根证书:比如
company-ca.crt,再执行composer config -g cafile /path/to/company-ca.crt
composer config -g repo.packagist 输出仍是 https://packagist.org
配置看似执行成功,实则没写进去。Composer 2.x 对键名、type、URL 格式极其敏感,错一个字符就静默 fallback 到官方源。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 键名必须是
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/"} - 宝塔、Docker 或 CI 中容易权限错位:root 配的全局 config,www 用户执行时读不到,得用对应用户身份重配
换源后还是报 Connection refused
大概率是缓存没清干净,或者项目级 composer.json 里有 "repositories" 字段——只要存在,全局配置就彻底失效,不是优先级低,是被跳过。
- 必须清缓存:
composer clear-cache,否则旧失败记录还在,重试照样走原地址 - 检查项目根目录
composer.json是否含"repositories"字段(哪怕空数组"repositories": []),有就删掉或注释掉 - 临时绕过所有配置验证:
composer install -vvv --repository=https://mirrors.huaweicloud.com/repository/php/,-vvv会打出完整请求链路,一眼看出卡在 DNS、TCP 还是 TLS - 别信
composer diagnose的“OK”提示——它不测真实下载路径,只检基础扩展和配置语法
最常被忽略的是:换源命令少一个 /、多一个空格、或漏了 composer type 值,结果配置无效却无报错;还有就是缓存不清、repositories 字段残留、以及企业网下用 cafile /dev/null 调试完忘了还原——这些细节一错,整个流程就卡死。










