libcurl中不支持或禁用协议https

时间:2012-03-07 04:24:57

标签: php curl libcurl oscommerce

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

  

libcurl

中不支持或禁用协议https

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

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

3 个答案:

答案 0 :(得分:22)

对于那些支持https但仍然出现类似于以下错误的人

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

确保网址有效

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

答案 1 :(得分:16)

我遇到了这个问题,这是因为url中的空格:

<!doctype html>
<html>
<body>
    <form>
        <input id="cc" value="" placeholder="1234 1234 1234 1234">
    </form>
    <p>Type some sample credit card numbers in the box above and it should
    automatically format it nicely.</p>
    <script>
        function cc_format(value) {
            var v = value.replace(/\s+/g, '').replace(/[^0-9]/gi, '')
            var matches = v.match(/\d{4,16}/g);
            var match = matches && matches[0] || ''
            var parts = []
            for (i=0, len=match.length; i<len; i+=4) {
                parts.push(match.substring(i, i+4))
            }
            if (parts.length) {
                return parts.join('-')
            } else {
                return value
            }
        }

        onload = function() {
            document.getElementById('cc').oninput = function() {
                this.value = cc_format(this.value)
            }
        }
    </script>
</body>
</html>

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

答案 2 :(得分:9)

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

找到 curl 部分,并查看支持的协议。如果未列出https,则cURL未使用SSL支持构建,您无法使用https。

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

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