curl: (1) протокол https не підтримується або вимикається в libcurl


162

Я намагаюся встановити середовища Rails на Ubuntu 11.04. Коли я запускаю команду, rvm install 1.9.2 --with-openssl-dir=/usr/localз'являється така помилка:

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

Як це можна вирішити?


Що станеться, якщо ви не користуєтесь --with-openssl-dir=/usr/local(тобто просто rvm install 1.9.2)?
Омрі Барель

та сама проблема, я зазначив, що - з ... було вирішено питання
Джузеппе Ді Федеріко,

1
Мені важко повірити, що ваша завитка не підтримує HTTPS. Можливо, що rvm поставляється з власним curl, або що ви не встановили curl ( sudo apt-get install curl). Спробуйте curl -o "google.html" https://google.comперевірити, чи підтримується HTTPS.
Омрі Барель

У мене те саме повідомлення про помилку RCurl.
ізоморфізми

здивований, що на цю відповідь немає прийнятої відповіді.
jbrahy

Відповіді:


295

Отримав відповідь ТУТ для Windows, там написано, що:

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"

2
використовуйте натомість Windows SSL з підтримкою cURL curl.haxx.se/latest.cgi?curl=win64-ssl-sspi, якщо жоден з інших наданих відповідей не працює для Windows.
Ганеш

6
це правильно, і просто додати трохи солі, якщо ви хочете насправді використовувати подвійні лапки в рядку, який ви цитуєте, то вам потрібно уникнути їх, наприклад: curl "http://localhost:3030/messages/" -H "Content-Type: application/json" --data-binary "{ \"name\":\"Curler\", \"text\": \"Hello from the command line\" }"замість curl "http://localhost:3030/messages/" -H "Content-Type: application/json" --data-binary '{ "name":"Curler", "text": "Hello from the command line" }'... взяти до уваги одинарний і нерозміщений подвійний цитати з неправильної частини.
Еммануель Махуні

@EmmanuelMahuni Дякую за підказку. Я зіткнувся з тією ж проблемою під час спроби CURL з конвеєра Bitbucket, моє значення включає подвійні лапки (") (як я читаю з відповіді json з aws cli, використовуючи jq), один раз після видалення подвійного від початку та кінця. працював на мене. Ось як я це зробив. new_url=$( echo $url | tr -d \" )
Appu Mistri

1
Ви просто врятували мене ТАКОЛЬКО часу! Дякую!
Річард Варно

1
Маючи такий же ефект із завитком на macOS.
not2savvy

82

Я зіткнувся з цією проблемою і виявив, що перед цим був пробіл, httpsякий викликав проблему. " https://"проти"https://"


6
І я отримав те саме. Я був здивований, чому на чорт на землі я отримую цю помилку. :) +1 для того, щоб поділитися цим.
Awais Qarni

3
Аналогічно для мене, це була єдина цитата, тому що ми обернули баш-значення за замовчуванням однією цитатою, хоча це не було необхідним ...
Матьє Дамулін

1
Дивно, що це, мабуть, було проблемою для багатьох людей - включаючи і мене. Час від часу трапляється, але здається щось незрозумілим. Ну добре. Дякую
dgo

1
Це було для мене питання. Дякую @jbrahy
colecmc

1
Так, я отримав те саме. Видаляючи простір, він добре працював для мене.
Amandeep kaur

21

Схоже, відповідей уже так багато, але питання, з яким я стикався, було з подвійними цитатами. Існує різниця між:

і

"

Зміна першої подвійної лапки на другу працював для мене, нижче наведений зразок завитка:

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

Звичайно, моя Людина.
Pavan_Obj

Це вирішило мою проблему.
Харі Еннекат

Радий, що це виправлено :).
Pavan_Obj

11

Я зіткнувся з тією ж проблемою, намагаючись встановити rvm для ruby. знайшов рішення: після вилучення curl (tar) у папці завантаження root.

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)

джерело



8

Про це конкретно згадується у записі до FAQ "libcurl" Протокол xxx не підтримується або відключається в libcurl ".

Для вашого задоволення я вкладаю пояснення і тут:

При передачі URL-адреси для згортання вона може відповісти, що конкретний протокол не підтримується та не вимикається. Особливо формулюється це повідомлення про помилку через те, що curl не робить внутрішнього розрізнення того, чи не підтримується певний протокол (тобто ніколи не було додано жодного коду, який би знав, як говорити про цей протокол) або явно було відключено. curl може бути побудований лише для підтримки заданого набору протоколів, а решта буде відключена або не підтримується.

Зауважте, що ця помилка також виникне, якщо ви передасте неправильно написану частину протоколу, як у "htpt: //example.com", або як у менш очевидному випадку, якщо ви встановите частину протоколу пробілом, як у " http: // example" .com / ".


10
Я не вірю, що ця відповідь пояснює ОП, що він повинен зробити, щоб вирішити проблему.
ізоморфізм

3
це пояснює, що означає повідомлення, з чого випливає, що його командного рядка було недостатньо для створення libcurl із включеною HTTPS
Даніель Стенберг

Отриманий біт через префікс пробілу. Якщо лише помилка прочитала "Протокол" xxx "не підтримується або вимкнено в libcurl"
зверху

8

У моєму випадку протокол HTTPS спочатку не підтримувався libcurl. Щоб дізнатися, які протоколи підтримуються, а які ні, я перевірив версію 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 (включити ssl-зв’язок у mac) зробити тестовий sudo make install

І після декількох хвилин роботи проблеми вирішили!

Потім я запустив команду версії curl, вона показала:

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

Я вирішую це лише зміною 'http://webname...'на"http://webname..."

Зауважте цитату. Він повинен бути подвійним ( "), а не одиничним ( ').


так! Це вирішило проблему для мене, запустивши curl у моєму командному рядку Windows. Дякую!
Ряно

2

Мою проблему усунув не відображений символ UTF. Я копіюю посилання з доріжки nginx і отримаю наступне у буфері обміну:

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.


1

Отримала таку ж помилку при використанні curl на веб-сайті https

curl https://api.dis...

як вказував Ганеш , це було тому, що моя версія curl не була включена. повернувся назад і завантажив версію з ssl, і вона спрацювала чудово.


1
Так само я і не побачив опцію SSL на сторінці завантаження.
Патрік Боркович

0

Я щойно перекомпілював curl з параметрами налаштування, що вказують на папку бібліотеки openssl 1.0.2g і включають папку, і я все одно отримую це повідомлення. Коли я роблю ldd на curl, це не показує, що він використовує або, libcrypt.soабо libssl.so, тому я припускаю, що це повинно означати, що, хоча makeі make 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, розміщений файл openssl.cnf. Я вибрав останнє. Але якби це було першим, make мав би провалитися з помилкою, що він не міг знайти бібліотеку.


Текст посилання сам правильний. curl не може отримати за допомогою https, і я не знаю чому.
тутовий

0

Визначення протоколу в URL-адресі може вирішити вашу проблему.

У мене була подібна проблема (під час використання клієнта curl php):

Я передав domain.com замість sftp: //domain.com, що призводить до цієї заплутаної помилки:

Протокол "http" не підтримується або вимикається в libcurl, зайняв 0 секунд.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.