登录
首页 >  文章 >  php教程

PHPEnv报错SSL_read: Connection Reset,Git同步解决方法

时间:2026-05-13 09:15:38 302浏览 收藏

PHPEnv中Git通过HTTPS同步时频繁出现“SSL_read: Connection Reset”错误,根源在于其内置旧版Git与网络环境(如企业防火墙、代理或杀毒软件)在SSL/TLS握手阶段发生冲突,导致连接被重置而非正常报证书错误;解决关键在于正确配置git config --global https.sslVerify "false"(注意是https而非http前缀),而非无效的http.sslVerify;若仍失败,需排查sslCAInfo路径异常或Git版本过旧,终极推荐方案是切换为更安全的SSH协议——生成ed25519密钥、添加至代码平台并更新远程URL,既规避SSL风险,又一劳永逸。

phpEnv提示OpenSSL SSL_read: Connection was reset 解决Git同步问题

这是 Git 在 Windows 下通过 phpEnv 或类似集成环境调用时,因 SSL 握手失败或连接被重置导致的典型报错,不是 PHP 本身的问题,而是 Git 的 HTTPS 请求层卡在 OpenSSL 上。

git config --global http.sslVerify "false" 能不能直接用

能,但要分清协议类型:

  • http.sslVerify 控制的是 http:// 协议(极少用),对 GitHub 等 HTTPS 地址无效
  • https.sslVerify 才是关键,必须设为 false 才能绕过证书校验
  • 执行命令时注意空格和引号:正确的写法是 git config --global https.sslVerify "false",少空格或错引号会静默失败
  • 改完后建议在项目目录外执行 git clone https://github.com/xxx/yyy.git 测试,避免缓存干扰

为什么 phpEnv 环境下更容易触发这个错误

因为 phpEnv 自带的 Git 往往是精简版或旧版本(比如 2.2x),默认启用较严格的 TLS 1.2+ 协商,而某些网络出口(企业防火墙、校园网、代理)会中间劫持 HTTPS 连接并替换证书,导致 OpenSSL 直接 reset 连接,而非抛出证书错误。

  • phpEnv 启动的 Git 进程可能继承了系统代理或杀毒软件的 SSL 拦截规则
  • 部分 phpEnv 封装脚本会强制设置 http.sslCAInfo 指向一个过期或不全的根证书包
  • 解决方案优先级:先试 https.sslVerify "false";不行再检查 git config --get http.sslCAInfo 是否指向了异常路径;最后考虑升级 phpEnv 内置 Git

更安全的替代方案:换 SSH 协议拉代码

禁用 SSL 校验只是临时解法,长期用 HTTPS + sslVerify false 有中间人攻击风险。推荐切到 SSH:

  • 生成密钥用 ssh-keygen -t ed25519 -C "your_email@example.com"(比 rsa 更现代)
  • 公钥内容复制自 ~/.ssh/id_ed25519.pub,粘贴到 GitHub/GitLab 的 SSH Keys 设置页
  • 把远程地址从 https://github.com/user/repo.git 改成 git@github.com:user/repo.git,用 git remote set-url origin git@github.com:user/repo.git
  • 首次连接需确认指纹:ssh -T git@github.com,看到 Hi xxx! You've successfully authenticated 即成功

真正麻烦的不是命令怎么写,而是很多人改了 https.sslVerify 还报错,结果发现是 phpEnv 的 Git 被另一个安装的 Git 覆盖了 PATH,或者用了管理员权限启动的终端但配置写到了用户级——务必用 git config --list --show-origin 看实际生效的是哪一行。

理论要掌握,实操不能落!以上关于《PHPEnv报错SSL_read: Connection Reset,Git同步解决方法》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>