我最近重新安装了我的计算机并安装了我一直这样做的 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 地址“192.30.253.113”的 RSA 主机密钥到已知主机列表。权限被拒绝(公钥)。致命:无法从远程存储库中读取。
请确保您具有正确的访问权限并且存储库存在。
在尝试了更多之后,我注意到无论我尝试通过 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 版本中可以正常工作。
[Composer\Downloader\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 时,这个问题终于解决了。