curl:(1)libcurl中不支持或禁用协议https

时间:2011-07-30 17:07:21

标签: ruby-on-rails curl openssl libcurl ubuntu-11.04

我正在尝试在Ubuntu 11.04上安装Rails环境。当我启动命令rvm install 1.9.2 --with-openssl-dir=/usr/local时,收到以下错误:

curl : (1) Protocol https not supported or disabled in libcurl

如何解决这个问题?

13 个答案:

答案 0 :(得分:201)

获得了Windows的答案HERE, 它说:

curl -XPUT 'http://localhost:9200/api/twittervnext/tweet'

Woops,首先尝试并且已经出错:

curl: (1) Protocol 'http not supported or disabled in libcurl

出现此错误的原因有点愚蠢,当您使用命令的单引号时,Windows不喜欢它。所以正确的命令是:

curl –XPUT "http://localhost:9200/api/twittervnext/tweet"

答案 1 :(得分:64)

我遇到了这个问题,结果发现在导致问题的https之前有一个空格。 " https://" vs "https://"

答案 2 :(得分:10)

我在尝试为ruby安装rvm时遇到了同样的问题。 找到了解决方案: 在root的downloads文件夹中提取curl(tar)之后。

cd /root/Downloads/curl # step-1
./configure --with-ssl # step-2
make # step-3
make install # step-4 (if not root, use sudo before command)

source

答案 3 :(得分:8)

这在libcurl FAQ条目“Protocol xxx not supported or disabled in libcurl”中有具体提及。

为了您的荣幸,我也在这里嵌入了解释:

  

传递要使用的curl的URL时,它可能会响应   不支持或禁用特定协议。特别的方式   这个错误信息是措辞是因为卷曲不成功   内部区分特定协议是否不是   支持(即从未添加任何知道如何说的代码   协议)或是否明确禁用。卷曲只能建立   支持一组给定的协议,其余的将被禁用   或不支持。

     

请注意,如果您传递错误的拼写,也会发生此错误   协议部分,如“htpt://example.com”或不太明显   如果在协议部分前面添加空格,则为“   http://example.com/”。

答案 4 :(得分:7)

看起来已经有很多答案了,但是我面临的问题是双引号。 两者之间有区别:

"

将第一个双引号更改为第二个对我有用,下面是示例curl:

curl -X PUT -u xxx:xxx -T test.txt "https://test.com/test/test.txt"

答案 5 :(得分:6)

用flag --with-darwinssl

解决了这个问题

转到包含curl源代码的文件夹

在此处下载https://curl.haxx.se/download.html

sudo ./configure --with-darwinssl
make
make install

重新启动你的控制台,它就完成了!

答案 6 :(得分:5)

就我而言,libcurl首先不支持HTTPS协议。为了找出支持哪些协议以及哪些协议不支持,我使用命令检查了curl版本:

curl --version

它提供的信息如下: curl 7.50.3 (x86_64-apple-darwin15.6.0) libcurl/7.50.3 SecureTransport zlib/1.2.5 协议:dict文件ftp ftps gopher http imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 功能:IPv6 Largefile NTLM NTLM_WB SSL libz UnixSockets

其中不支持https协议。

然后我重新安装curl并使用以下命令安装它(解压后):

  

./ configure --with-darwinssl(在mac中启用ssl通信)   使   做测试   sudo make install

经过几分钟的工作,问题解决了!

然后我重新运行curl version命令,它显示:

curl 7.50.3 (x86_64-apple-darwin15.6.0) libcurl/7.50.3 SecureTransport zlib/1.2.5 协议:dict文件ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 功能:IPv6 Largefile NTLM NTLM_WB SSL libz UnixSockets

出现了HTTPS协议!

最后,当您遇到卷曲问题时,这是一个有用的网站。   https://curl.haxx.se/docs/install.html

答案 7 :(得分:4)

我只需将'http://webname...'更改为"http://webname..."

即可解决此问题

请注意引用。它应该是双倍(")而不是单个(')。

答案 8 :(得分:1)

在https网站上使用curl时出现同样的错误,如

curl https://api.dis...

正如ganesh所指出的,这是因为我的curl版本没有启用ssl。回去并用ssl下载了版本,它工作正常。

答案 9 :(得分:1)

我的问题是由于没有显示UTF符号。我从nginx track复制链接并在剪贴板中找到下一个链接:

0x00000000: e2 80 8b 68 74 74 70 73 3a 2f 2f 73 6b 2e 65 65 2f 75 70 6c 6f 61 64 2f 66 69 6c 65 73 2f 45 53  ...https://sk.ee/upload/files/ES
0x00000020: 54 45 49 44 2d 53 4b 5f 32 30 31 35 2e 70 65 6d 2e 63 72 74                                      TEID-SK_2015.pem.crt            

问题符号为0xe2 0x80 0x8b ZERO WIDTH JOINER,位于https。

之前

答案 10 :(得分:0)

我刚刚使用指向openssl 1.0.2g库文件夹和include文件夹的configure选项重新编译curl,我仍然收到此消息。当我在curl上执行ldd时,它没有显示它使用libcrypt.solibssl.so,所以我认为这必须意味着即使makemake install成功了错误,但curl没有HTTPS支持?配置和制作如下:

./configure --prefix=/local/scratch/PACKAGES/local --with-ssl=/local/scratch/PACKAGES/local/openssl/openssl-1.0.2g --includedir=/local/scratch/PACKAGES/local/include/openssl/openssl-1.0.2g
make
make test
make install

我应该提到libssl.so.1位于/local/scratch/PACKAGES/local/lib。目前还不清楚--with-ssl选项是应该指向那里,还是指向openssl install放置openssl.cnf文件的目录。我选择了后者。但如果它应该是前者,那么make应该会因为找不到库而出错。

答案 11 :(得分:0)

在网址中指定协议可能会解决您的问题。

我遇到了类似的问题(使用curl php客户端时):

我正在传递 domain.com 而不是 sftp://domain.com ,这导致了这个令人困惑的错误:

  

协议" http"在libcurl中不支持或禁用,耗时0秒。

答案 12 :(得分:0)

我也遇到了这个问题,在调试后找到了罪魁祸首。就我而言,它是https前面的“空格”字符