composer diag 默认只连 https://packagist.org,不读镜像配置,失败≠实际不可用;验证镜像应执行 composer show -p | head -5,或临时清缓存后测真实请求。

composer diag 命令为什么连不上镜像源
composer diag 默认会尝试连接 Packagist 官方源(https://packagist.org),即使你已配置国内镜像,它也不会自动走镜像地址。这是最常被误解的一点:诊断命令不读取 repositories 配置,只检测默认上游连通性与本地环境基础能力。
如果你看到类似 curl error 7: Failed to connect to packagist.org port 443,基本可以确定是本地网络无法直连境外服务——此时不是 Composer 坏了,而是诊断逻辑本身就在“故意”测这个。
- 想验证镜像是否可用,得手动用
curl -I https://mirrors.aliyun.com/composer/或wget --spider https://packagist.phpcomposer.com/(注意:后者已停用,别再试) -
composer diag中的PHP version、OpenSSL、curl等检查项才是真有用的,它们不依赖网络,能暴露 PHP 环境缺失模块 - Windows 用户若用 Git Bash 运行
composer diag,可能因 curl 版本太旧或 SSL 证书路径不对而误报,建议改用 PowerShell 或 CMD
如何让 composer diag 测试指定镜像节点
官方 diag 命令不支持传入镜像 URL 参数,但你可以绕过它,用更直接的方式模拟 Composer 的请求行为。核心是复用 Composer 内部使用的 HTTP 客户端配置,尤其是证书和超时设置。
最稳妥的做法是临时修改全局配置,让 composer diag 的后续操作(比如 composer show)实际走镜像,再配合抓包或日志确认:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 运行
composer config -g repos.packagist composer https://mirrors.aliyun.com/composer/(阿里云镜像) - 执行
composer clear-cache清掉旧元数据缓存 - 再跑
composer show -p | head -n 5—— 如果能列出包名,说明镜像通信正常;如果卡住或报Could not fetch,问题出在 DNS、代理或 TLS 握手环节 - 不想改全局配置?可临时设环境变量:
COMPOSER_REPO_PACKAGIST=https://mirrors.tuna.tsinghua.edu.cn/composer/ composer show -p
curl 错误码 35 / 60 / 7 出现时分别该查什么
这些数字不是随机的,对应 OpenSSL 和网络栈不同层级的问题:
-
curl error 35:TLS 握手失败。常见于系统 OpenSSL 版本过低(如 CentOS 6 自带 1.0.1e)、或镜像站启用了较新 TLS 版本(如 TLS 1.3),需升级 PHP 的 cURL 扩展或换用新版 PHP -
curl error 60:SSL 证书验证失败。典型原因是 CA 证书路径不对(openssl.cafile未设或指向错误文件),或镜像 HTTPS 证书由非主流 CA 签发(极少见)。临时解决可加-k,但生产环境必须修复证书链 -
curl error 7:无法建立 TCP 连接。优先检查本地防火墙、公司代理策略、hosts 文件是否屏蔽了镜像域名,其次看ping mirrors.aliyun.com是否通,不通就不是 Composer 的问题
镜像源切换后 composer update 仍慢或失败
换源只是第一步,Composer 还会从镜像拉取 packages.json 和大量 dist 归档包,这两类请求受不同机制影响:
-
packages.json走的是镜像 HTTP 接口,响应快;但dist包(zip/tar.gz)默认仍可能回源下载,除非镜像完整同步了所有归档——阿里云、清华源目前都支持 dist 全量镜像,但需确认你的 Composer 版本 ≥ 2.2(旧版不识别dist-url字段) - 运行
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/后,再执行composer config -g repos.packagist.packages.dist-url https://mirrors.aliyun.com/composer/dists/可显式指定 dist 下载根路径 - 某些私有包或 GitHub 仓库依赖,不受镜像控制,
composer update时仍会直连 GitHub —— 这类情况要单独配github-oauth或用git clone协议替代https
镜像节点本身没有「智能路由」能力,它只是静态转发。真正影响速度的,往往是本地到镜像服务器之间的 BGP 路由质量,而不是 Composer 配置本身。

















