libcurl中不支持或禁用协议https

问题描述 投票:16回答:3

我在我的应用程序中使用Authorize.net(在OSCOMMERCE中),当用户付款时返回空响应。我调试并发现它返回此错误:

libcurl中不支持或禁用协议https

我发送一个探测器url以https开头,那个https://secure.authorize.net/gateway/transact.dll没有空间

我在共享托管服务器中的应用我怀疑这是服务器端问题还是编程问题?

php curl libcurl oscommerce
3个回答
9
投票

创建一个名为info.php的脚本,并在其中放入<?php phpinfo(); ?>。将其保存在您网站的某个位置,以便您可以从浏览器访问它。

找到curl部分并检查支持哪些Protocols。如果未列出https,则cURL不是使用SSL支持构建的,您无法使用https。

您还可以查看Registered PHP Streams的第一部分,看看是否列出了https。如果是这样,那么你可以回退使用PHP的套接字函数或函数,如file_get_contents()fopencontext

由于您提到您在共享主机上,请求您的主机重新编译PHP,以便PHP和curl都使用OpenSSL支持构建,因此您可以使用加密,否则您将需要找到另一个解决方案。


22
投票

对于那些支持https但仍然得到类似于下面的错误的人

[curl] 1: Protocol %20https not supported or disabled in libcurl [url] %20https://www.example.com/%20

确保URL有效

  • 尝试使用https://www.example.com等基本URL
  • 检查您的网址,确保网址的开头/结尾没有空格(如上图所示为%20)
  • 检查URL中可能会破坏卷曲请求的字符

16
投票

我有这个问题,这是因为url中的空格:

' https://www.google.com/recaptcha/api/siteverify'

如你所见,在https之前有一个空格

© www.soinside.com 2019 - 2024. All rights reserved.