Composer安装Yii2时遇到curl error 28的终极解决【排错】
发布:smiling 来源: PHP粉丝网 添加日期:2026-07-05 18:49:52 浏览: 评论:0
在国内安装 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 字段,它会覆盖全局配置。
设对 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 测试是否绕过证书检查后能通(仅用于诊断,勿长期使用)。
Tags: Composer安装Yii2 curl error 28
相关文章
- ·Fatal error: Maximum execution time of 30 seconds(2013-11-16)
- ·解决Magento报错:Fatal error: Call to undefined method(2013-11-30)
- ·Laravel validate error处理,ajax,json示例(2022-01-18)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)
