使用未定义的常量CURL_SSLVERSION_TLSv1 - 假设' CURL_SSLVERSION_TLSv1'

时间:2015-07-07 10:50:07

标签: php curl

我使用的是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版本?

3 个答案:

答案 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 )