“connection refused”或“curl error 7”是系统连通性中断,非composer配置问题;需用dig查dns、检查hosts文件、换热点验证,curl -i失败常因url缺末尾斜杠或dns未解析,且ssl证书问题须配置curl.cainfo指向有效cacert.pem。

“Connection refused”或“cURL error 7”不是 Composer 配置错,是系统连通性断了——Composer 根本没发出去请求,或发出去后被网络中间层直接拒绝。
为什么 curl -I 验证镜像源会失败
镜像源 URL 格式错误会导致 curl 请求构造失败,比如少末尾斜杠:https://mirrors.aliyun.com/composer ❌ 会拼出非法路径 /composerpackages.json;正确写法必须是 https://mirrors.aliyun.com/composer/ ✅。此外,DNS 解析失败时 curl 甚至无法解析域名,直接报 Could not resolve host,此时 curl -I 不是验证失败,而是根本没走到 HTTP 层。
卡在 Resolving dependencies 就别碰 http.timeout
这一步只做 DNS 查询(查 mirrors.aliyun.com 或 packagist.org 的 IP),不走 HTTP、不读代理、不响应 http.timeout 设置。常见表现是命令长时间无输出,光标停住不动。此时应:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 运行
dig mirrors.aliyun.com @114.114.114.114,看是否返回有效 IPv4 地址 - 检查
/etc/hosts(Linux/macOS)或C:\Windows\System32\drivers\etc\hosts(Windows)是否误将镜像域名指向127.0.0.1或其他错误 IP - 换手机热点测试——企业网常屏蔽
packagist.org和 GitHub 域名,但热点通常直连通畅
SSL 证书问题实际是 curl 验证失败
报错 SSL certificate problem: unable to get local issuer certificate 表明 PHP 的 cURL 扩展无法校验 HTTPS 证书链,和 Composer 无关。解决方式是:
- 下载最新
cacert.pem(从curl.se),在php.ini中设置curl.cainfo = "/full/path/to/cacert.pem",然后重启 CLI - 临时绕过(仅调试):
php -d openssl.cafile=/path/to/cacert.pem composer install - 不推荐用
composer config -g github-oauth解决此问题——它管的是 GitHub API 认证,不是 TLS 握手
镜像源配置“看似成功”却静默不生效
换源命令漏字符、类型写错、URL 少斜杠,都会导致配置无效但无提示。验证方法唯一可靠的是:
- 执行
composer config -g repo.packagist,输出必须是完整 JSON:{"type": "composer", "url": "https://mirrors.aliyun.com/composer/"} - 键名必须是
repo.packagist(repo单数,不是repos) -
type值必须显式写"composer",不能省略或拼成"compose" - 换源后必须立刻执行
composer clear-cache,否则旧缓存仍会复用失败地址
最容易被忽略的是:DNS 污染和 hosts 误写不会报错,只会让所有后续操作在“看不见的地方”持续失败;而 curl -I 返回 200 并不能代表 Composer 能正常工作——它只说明镜像源服务在线,不代表 Composer 能正确拼接包元数据路径。










