我在我的应用程序中使用Authorize.net(在OSCOMMERCE中),当用户付款时返回空响应。我调试并发现它返回了这个错误:
libcurl
中不支持或禁用协议https
我发送一个探测器网址以https开头,没有空间 https://secure.authorize.net/gateway/transact.dll
我在共享托管服务器中的应用程序。我怀疑这是服务器端问题还是编程问题?
答案 0 :(得分:22)
对于那些支持https但仍然出现类似于以下错误的人
[curl] 1: Protocol %20https not supported or disabled in libcurl [url] %20https://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()
或fopen
和context。
由于您提到您在共享主机上,请求您的主机重新编译PHP,以便PHP和curl都使用OpenSSL支持构建,因此您可以使用加密,否则您将需要找到另一个解决方案。