0

0

composer如何解决由于cURL error 28超时导致的安装中断_composer超时设置【指南】

穿越時空

穿越時空

发布时间:2026-01-21 15:52:37

|

635人浏览过

|

来源于php中文网

原创

curl error 28 根本原因是 DNS 解析或 TLS 握手超时,非下载慢;首选方案是切换国内镜像源(如阿里云),其次排查本地 DNS 和 OpenSSL 证书问题。

composer如何解决由于curl error 28超时导致的安装中断_composer超时设置【指南】

curl error 28 是 Composer 在下载包时最常遇到的网络超时错误,本质不是 Composer 本身的问题,而是底层 cURL 在连接或接收响应时耗时超过预设阈值后主动中止。直接调高超时参数往往治标不治本——真正卡住的通常是 DNS 解析、TLS 握手或镜像源响应慢,而非单纯“下载太慢”。


为什么改 CURLOPT_TIMEOUT 不一定有用

Composer 内部使用 cURL 下载,但它不暴露原始 cURL 参数配置接口,你无法像写 PHP 脚本那样直接设 CURLOPT_TIMEOUTCURLOPT_CONNECTTIMEOUT。强行修改 PHP 的 max_execution_timedefault_socket_timeout 也无效,因为 Composer 启动的是独立进程,且其网络层封装了重试与并发逻辑。

常见误操作包括:

  • 修改 php.ini 中的 max_execution_time = 300 → 对 Composer CLI 无影响
  • 在命令前加 timeout=300 composer install → shell 环境变量不被 Composer 识别
  • 以为 composer config -g github-oauth.github.com token 能加速 → 这只影响 GitHub API 限速,和 packagist 主体下载无关

优先换国内镜像源(最有效、一步到位)

repo.packagist.org 官方源在大陆访问极不稳定,DNS 解析常超 15 秒,TLS 握手失败率高,这是 curl error 28 的主因。换成阿里云、腾讯云等镜像后,90%+ 场景可秒解。

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

其他可用镜像(任选其一):

⚠️ 注意:如果项目里已有 composer.json 且含自定义 repositories,全局镜像可能被覆盖。此时应删掉项目级配置,或统一用:

composer config repo.packagist composer https://mirrors.aliyun.com/composer/
(不加 -g,仅对当前目录生效)

仍失败?检查 DNS 和 OpenSSL 证书链

即使换了镜像,仍有小概率报错,典型现象是:

VWO
VWO

一个A/B测试工具

下载

这说明问题出在本地 TLS 层或 DNS:

  • Windows 用户常见于系统自带 DNS(如 114.114.114.114)解析 mirrors.aliyun.com 缓慢 → 改用 8.8.8.8223.5.5.5
  • macOS/Linux 可临时测试:
    echo "nameserver 223.5.5.5" | sudo tee /etc/resolv.conf
  • OpenSSL 证书过期(尤其 XAMPP/MAMP 用户)→ 更新系统根证书,或让 Composer 跳过验证(仅调试用):
    composer config -g secure-http false
    (生产环境禁用)

极少数场景才需调整 Composer 超时行为

Composer 自身提供两个可调参数,但仅对「包元数据拉取」阶段有效(即 packages.jsonp2/*.json),不控制 ZIP 包下载:

  • composer config -g http.ssl.certificate:指定 PEM 证书路径(极少需设)
  • 更实用的是延长重试与并发等待:
    composer config -g bitbucket-oauth.bitbucket.org '{"consumer-key":"xxx","consumer-secret":"yyy"}'
    (仅限 Bitbucket 私有库)

真正影响 ZIP 下载的是 PHP 的 default_socket_timeout(单位秒),可在运行时覆盖:

php -d default_socket_timeout=600 /usr/local/bin/composer install

但注意:该设置对所有 socket 操作生效,若机器本身网络异常,单纯延长时间只会让失败来得更晚。


换镜像源是解决 curl error 28 的第一动作,不是“试试看”的备选方案——它是事实标准。DNS 和证书问题容易被忽略,但它们藏在错误日志背后,不排查就反复重试只是浪费时间。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2743

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1673

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1532

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

995

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1464

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1235

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1549

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1307

2023.11.13

AO3中文版入口地址大全
AO3中文版入口地址大全

本专题整合了AO3中文版入口地址大全,阅读专题下面的的文章了解更多详细内容。

1

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 9万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 9.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号