我最近重新安装了我的计算机并安装了Linux子系统,我一直这样做。当我想要运行 composer 时,我发现了一些奇怪的东西。它失败了,因为它无法建立TLS连接。
[RuntimeException的] 无法通过https,ssh协议克隆https://github.com/inquam/colors.php,中止。
https://github.com/inquam/colors.php 克隆到裸存储库' /home/danlil/.cache/composer/vcs/https --- github.com-inquam-colors.php' ... 致命:无法访问' https://github.com/inquam/colors.php/':gnutls_handshake()失败:TLS连接未正确终止。
git@github.com:inquam / colors.php 克隆到裸存储库' /home/danlil/.cache/composer/vcs/https --- github.com-inquam-colors.php' ... 警告:永久添加用于IP地址的RSA主机密钥' 192.30.253.113'到已知主机列表。 权限被拒绝(公钥)。 致命的:无法从远程存储库读取。
请确保您拥有正确的访问权限 存储库存在。
尝试了一下后,我注意到无论我尝试通过https克隆哪个GitHub存储库,它都会发生这种情况,并且它也适用于通过 curl 或使用TLS连接的其他命令的任何连接。我在其他线程中尝试了几种建议的解决方案,例如更新 ca-certificates ,在Windows 10上重新安装 Ubuntu ,下载 https://curl.haxx.se/ca/cacert.pem 并指向在 php.ini 中,确保 ipv6 不是 Ubuntu 等中的首选方法。
以前当我在 Windows 10 中使用 Ubuntu 时,我刚刚安装完毕,所有工作都没有任何问题。
更新:经过多次测试后,我决定测试安装Windows版本的GIT并删除Linux版本,因为Linux子系统现在可以运行Windows二进制文件。它工作正常。然后,Composer想要下载 https://packagist.org/packages.json 并因TLS而再次失败。因此,当运行Linux版本的程序时,TLS在Bash中不起作用,但在WIndows版本中可以正常工作。
[作曲\下载\ TransportException] " https://packagist.org/packages.json"无法下载文件:无法启用加密 无法打开流:操作失败
为了演示它似乎影响了我测试过的每个本机Bash应用程序
me @ DATHREADRIPPER:/ mnt / e / src $ php -r' echo file_get_contents(" https://packagist.org/packages.json");'
PHP警告:file_get_contents():无法在第1行的命令行代码中启用加密 PHP警告:file_get_contents(https://packagist.org/packages.json):无法打开流:第1行的命令行代码中的操作失败
更新对我来说,当我从Windows商店在Windows中安装较新的Ubuntu 18.04时,终于解决了这个问题。