我使用的是php 5.3.10版 并使用curl版本7.22.0 当我使用这段代码时:
$curlOptions[CURLOPT_URL] = $absUrl;
$curlOptions[CURLOPT_RETURNTRANSFER] = true;
$curlOptions[CURLOPT_CONNECTTIMEOUT] = 30;
$curlOptions[CURLOPT_TIMEOUT] = 80;
$curlOptions[CURLOPT_HTTPHEADER] = $headers;
$curlOptions[CURLOPT_SSLVERSION] = CURL_SSLVERSION_TLSv1;
它出现以下错误:
使用未定义的常量CURL_SSLVERSION_TLSv1 - 假设' CURL_SSLVERSION_TLSv1'
请帮我解决此错误。我应该为这个PHP版本使用什么CURL SSL版本?
答案 0 :(得分:11)
official documentation中实际上有关于此问题的评论:
请注意,在PHP 5.5之前,以下常量缺失并且仅通过其数值可用:
CURL_SSLVERSION_DEFAULT // 0 CURL_SSLVERSION_TLSv1 // 1 CURL_SSLVERSION_SSLv2 // 2 CURL_SSLVERSION_SSLv3 // 3
此支持请求后修复此问题:https://bugs.php.net/bug.php?id=62318
如果您想明确使用TLSv1,只需提供1
作为整数字面而不是CURL_SSLVERSION_TLSv1
常量。
但是,除非您要连接的服务器需要非常特定的TLS协议版本,否则通常可以将cURL选项保留为其默认值,并让cURL自行确定协议。
答案 1 :(得分:9)
我刚把它添加到我的启动文件的顶部:
// Add some missing constants
defined('CURL_SSLVERSION_DEFAULT') || define('CURL_SSLVERSION_DEFAULT', 0);
defined('CURL_SSLVERSION_TLSv1') || define('CURL_SSLVERSION_TLSv1', 1);
defined('CURL_SSLVERSION_SSLv2') || define('CURL_SSLVERSION_SSLv2', 2);
defined('CURL_SSLVERSION_SSLv3') || define('CURL_SSLVERSION_SSLv3', 3);
...现在我好一点,因为,如helmbert引用的那样,PHP中缺少这些常量< 5.5。
答案 2 :(得分:-3)
你应该使用
curl_setopt ( $ch , CURL_SSLVERSION_TLSv1 , true )