curl error 28主因是dns解析或tls握手失败,非网速问题;应先换阿里云镜像源https://mirrors.aliyun.com/composer/并清缓存,再配asset-packagist.cn,最后按需调高http.timeout至600。

在国内安装 Yii2 时遇到 curl error 28,不是“网速慢”,而是请求卡在 DNS 解析、TLS 握手或镜像源响应环节。直接调高超时值往往无效,关键要定位卡点、换对源、避开干扰链路。
先确认是不是真·curl error 28
报错里明确带 Operation timed out after XXX milliseconds 才是标准的 error 28。如果出现以下情况,就不是超时问题,得另查:
-
curl error 6:域名无法解析 → 查本地 DNS(如用
nslookup packagist.org) - curl error 35 或 60:TLS 握手失败 → 检查系统 OpenSSL 版本或杀软 HTTPS 扫描是否干扰
- 卡在 Cloning into 'xxx':这是 Git 克隆超时,和 Composer 的 HTTP 配置无关
最稳做法是加 -vvv 重试:composer create-project --prefer-dist yiisoft/yii2-app-basic basic -vvv,看最后几行停在哪一步——是连不上域名?还是连上了没返回?还是反复 retry 后失败?
换国内镜像源(一步到位)
官方源 repo.packagist.org 在国内 DNS 解析常超 15 秒、TLS 握手失败率高,是 error 28 的主因。换成阿里云、腾讯云或 asset-packagist.cn 镜像,90%+ 场景可秒解:
- 全局切换(推荐):
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 若项目依赖前端资源(如 bower/npm 包),还需配 asset 源:
composer config -g repositories.asset-packagist composer https://asset-packagist.cn - 验证是否生效:
composer config -g repos.packagist.org应输出含"url": "https://mirrors.aliyun.com/composer/"的 JSON
注意:镜像地址末尾不能多斜杠(https://mirrors.aliyun.com/composer// 会拼出 //packages.json 导致 404);若项目 composer.json 中有 repositories 字段,它会覆盖全局配置。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
设对 timeout 参数(别设错)
Composer 有两个关键超时参数,作用完全不同:
-
process-timeout:控制整个命令生命周期(如 git clone、unzip、脚本执行),单位秒。适合防大包解压或外部命令卡死。设为1200较稳妥。 -
http.timeout:真正管 HTTP 请求的连接 + 读取总时长(比如下载packages.json或 zip 包)。默认仅约 60 秒,国内建议设为600。
正确设置方式:
- 永久生效:
composer config -g process-timeout 1200 && composer config -g http.timeout 600 - 临时调试:
COMPOSER_PROCESS_TIMEOUT=1200 COMPOSER_HTTP_TIMEOUT=600 composer create-project ... - 项目级(如 CI):在
composer.json的config字段中加"process-timeout": 1200, "http.timeout": 600
别设 http-basic.timeout 或 timeout —— 这些是 v1 遗留项,v2 已废弃,设了也不生效。
排查隐形网络干扰
换源+调参后仍超时,大概率是本地环境有隐形干扰:
-
代理软件:Charles、Fiddler、某些杀软的 HTTPS 扫描,会让 TLS 握手卡在
* TLSv1.3 (IN), TLS handshake阶段。务必关闭。 -
DNS 污染:运行
curl -v https://mirrors.aliyun.com/composer/packages.json,若卡在* Connected to mirrors.aliyun.com后无响应,尝试强制指定公共 DNS:curl -v --resolve mirrors.aliyun.com:443:114.114.114.114 https://mirrors.aliyun.com/composer/packages.json -
公司/校园网络限制:部分内网会劫持 HTTPS 流量,导致证书验证失败。可临时用
curl -k测试是否绕过证书检查后能通(仅用于诊断,勿长期使用)。
不复杂但容易忽略










