composer 不提供直接升级 tls 的命令,其 tls 版本依赖 php 的 curl 或 openssl 扩展;常见错误如 curl error 35 或握手失败,源于底层组件使用 tls 1.0/1.1 连接仅支持 tls 1.2+ 的服务端。

Composer 本身不提供直接升级 TLS 版本的命令或配置项 —— 它依赖底层 PHP 的 cURL 或 OpenSSL 扩展,TLS 版本由这些组件决定。你看到的“需要升级 TLS”问题,通常是 Composer 在连接 HTTPS 源(如 https://packagist.org)时因 TLS 握手失败而卡住或报错,根源在环境而非 Composer 自身。
为什么 composer install/update 会提示 TLS 相关错误
常见现象包括:cURL error 35: SSL connect error、SSL routines:ssl3_read_bytes:sslv3 alert handshake failure、或静默卡在 Updating dependencies。这不是 Composer 要“升级 TLS”,而是它调用的 cURL/PHP 尝试用低版本 TLS(如 TLS 1.0/1.1)连接现代服务端(只支持 TLS 1.2+),被拒绝了。
- Windows 上 PHP 自带的
curl.dll(如 7.64.1)常不支持 ALPN 或 SNI,导致与代理/CDN 握手失败 - 系统代理(Clash/Surge/国产加速器)劫持 HTTPS 流量但未透传 SNI,或强制降级 TLS 协议
- PHP 的 OpenSSL 配置指向了过期 CA bundle(如
php\extras\ssl\cacert.pem),无法验证新证书链 - 某些旧版 CentOS 系统 OpenSSL 库太老(
检查当前 TLS 实际能力
别猜,直接验证 PHP/cURL 能用什么 TLS 版本:
php -r "print_r(curl_version());"
重点看 features 字段是否含 CURL_VERSION_SSL,以及 ssl_version 值;再运行:
php -r "\$ch = curl_init('https://tls12.badssl.com'); curl_setopt(\$ch, CURLOPT_NOBODY, true); curl_exec(\$ch); echo curl_error(\$ch);"
如果返回空,说明 TLS 1.2 可用;若报 SSL connect error,基本确认是底层限制。
- Linux/macOS:升级系统 OpenSSL 和 PHP(推荐用
brew install php或从 windows.php.net 下载新版 ZIP 包) - Windows:避免使用 XAMPP/MAMP 自带旧 PHP,改用官方线程安全(TS)VC15+ 编译版,并手动指定
openssl.cafile - 所有平台:运行
composer config -g -- disable-tls false确保没误关 TLS(该配置存在即危险)
绕过 TLS 协商失败的实操路径
当无法立刻升级底层时,优先用兼容性方案让 Composer 跑起来:
- 临时关闭系统代理变量:
HTTP_PROXY= HTTPS_PROXY= composer install(macOS/Linux)或set HTTP_PROXY= && set HTTPS_PROXY= && composer install(CMD) - 强制指定可信 CA 文件:
php -d openssl.cafile=/path/to/cacert.pem composer install,CA 文件可从 curl.se 下载最新版 - 项目级锁定镜像源为已知兼容的 HTTPS 地址:
composer config repo.packagist composer https://mirrors.aliyun.com/composer/(阿里云源全程 TLS 1.2+) - 禁用耗时插件干扰:
composer update --no-plugins --no-scripts,排除fxp/composer-asset-plugin等旧插件引发的握手异常
真正要“升级 TLS”,不是动 Composer,而是换 PHP、更新 OpenSSL、停用不合规代理。很多用户卡在这里,是因为把网络层问题当成工具配置问题去调 composer.json —— 那些字段对 TLS 版本毫无影响。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。










