curl error 35 是因代理不支持 https connect 隧道所致;需显式设置 https_proxy(协议为 http://)、验证隧道连通性,或通过 no_proxy/packagist 镜像绕过。

Composer install 时提示 “cURL error 35: SSL connect error”
这是典型的代理不支持 HTTPS 隧道(CONNECT)导致的。Composer 默认通过 HTTPS 访问 packagist.org,而某些企业代理或老旧 HTTP 代理只转发 HTTP 请求,无法建立 TLS 隧道,直接拒绝 CONNECT 请求。
验证方式:运行 curl -v https://packagist.org,若在 CONNECT 阶段失败(如返回 403 Forbidden 或连接被重置),基本可确认是代理层拦截了 HTTPS 隧道。
- 不要尝试用
composer config -g secure-http false—— 这只会让 Composer 改用 HTTP 源,但 Packagist 官方已强制禁用 HTTP,会直接报错Repository packagist.org is not valid, ensure you have a working connection to the internet - 不要手动改
composer.json的repositories为 HTTP 地址 —— 同样会被拒绝 - 优先检查代理是否真正支持 HTTPS CONNECT,例如用
curl -x http://your-proxy:port -v https://httpbin.org/get测试
设置 HTTP_PROXY 和 HTTPS_PROXY 环境变量时的协议陷阱
很多用户设了 HTTP_PROXY=http://proxy.example.com:8080 就以为万事大吉,但 cURL(Composer 底层依赖)对 HTTPS_PROXY 有特殊行为:如果未显式设置 HTTPS_PROXY,它会**复用 HTTP_PROXY 的值**,但不会自动升级为隧道模式——尤其当该代理地址写的是 http:// 协议时,cURL 可能退化为非隧道代理,导致 HTTPS 失败。
- 必须显式设置
HTTPS_PROXY,且值应与HTTP_PROXY完全一致:export HTTPS_PROXY=http://proxy.example.com:8080 - 值中协议必须是
http://(不是https://),因为代理本身是 HTTP 协议服务,只是用来转发 HTTPS 流量 - Windows 用户注意:PowerShell 中用
$env:HTTPS_PROXY="http://proxy.example.com:8080",CMD 中用set HTTPS_PROXY=http://proxy.example.com:8080 - 临时测试可用:
HTTPS_PROXY=http://proxy.example.com:8080 composer install
绕过代理走直连的几种安全可行方式
如果代理确实不支持 HTTPS 隧道,又无法更换代理,可局部绕过。关键是只跳过 Packagist 域名,不影响公司内网私有仓库。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 用
NO_PROXY环境变量排除域名:export NO_PROXY=packagist.org,repo.packagist.org(注意:不加https://,只写域名) - Composer 1.10+ 支持
composer config -g repositories.packagist.org.type composer+composer config -g repositories.packagist.org.url https://packagist.org,但这不解决代理问题,只是显式声明;真正起作用的是系统级NO_PROXY - 避免全局关代理(如
unset HTTP_PROXY),否则私有仓库地址可能无法访问 - 国内用户可考虑切换镜像源:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/,阿里云镜像支持 HTTP 代理隧道,兼容性更好
验证代理配置是否生效的最小命令
别等 composer install 跑十分钟才失败。用这条命令快速确认网络链路是否打通:
php -r "print_r(composer\ca-bundle\CaBundle::getBundledCaBundlePath());" 2>/dev/null || echo "CA bundle not found" curl -v --proxy http://proxy.example.com:8080 https://repo.packagist.org/packages.json -o /dev/null -s
重点看输出里是否有 > CONNECT repo.packagist.org:443 HTTP/1.1 和后续 。只要这里通了,Composer 就大概率能跑起来。
最常被忽略的是代理认证——如果代理需要用户名密码,http://user:pass@proxy:port 中的 pass 若含特殊字符(如 @、/),必须 URL 编码,否则 cURL 解析失败,错误表现和隧道不通一模一样。










