Git在phpEnv中HTTPS报错需设https.sslVerify "false"而非http.sslVerify,因phpEnv内置旧版Git易受中间人劫持;优先尝试此配置,无效时检查sslCAInfo路径或升级Git,更安全方案是切换SSH协议。

这是 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:
立即学习“PHP免费学习笔记(深入)”;
- 生成密钥用
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 看实际生效的是哪一行。



















