【r<-方案】解决OpenSSL SSL_connect:
2019-02-04 本文已影响6人
王诗翔
在方案|git与curl代理,解决git gnutls_handshake失败一文中,我解决了由于网络代理而引起git不能clone的问题。原因在于我开了lantern,所以很多软件都需要走代理。
在我对R包的文档进行更新时,类似的错误出现了。
> xe2_query = XenaQuery(xe2)
This will check url status, please be patient.
Error in curl::curl_fetch_memory(url, handle = handle) :
OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to 127.0.0.1:45077
我原以为这问题来自于curl本身,于是尝试关掉lantern,注释掉~/.curlrc
中的代理设置,结果依然有这个问题!在网上苦苦搜索后并没有发现有价值的信息,调整系统环境变量并不能纠正该错误。
特别奇怪的一点是,我在本地终端curl谷歌地址,完全没问题,但是在R中curl就抛出一样的错误。
> curl::curl_fetch_memory("www.google.com")
Error in curl::curl_fetch_memory("www.google.com") :
OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to 127.0.0.1:45077
这让我灵机一动,问题并不是出在curl上,而是出在R里面的curl包没有正确配置代理。朝着这个方向我去搜索R里面怎么设置curl代理,问题就解决了。
首先用下面代码打开R环境变量文件
> file.edit("~/.Renviron")
在其中添加下面两句:
http_proxy="http://127.0.0.1:45077"
https_proxy="http://127.0.0.1:45077"
重启R即可。