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

Ran*_*wat 2 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;
Run Code Online (Sandbox Code Playgroud)

它给出以下错误:

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

请帮我解决这个错误.我应该为这个PHP版本使用什么CURL SSL版本?

hel*_*ert 11

官方文档中实际上有关于此问题的评论:

请注意,在PHP 5.5之前,以下常量缺失并且仅通过其数值可用:

CURL_SSLVERSION_DEFAULT // 0
CURL_SSLVERSION_TLSv1  // 1
CURL_SSLVERSION_SSLv2 // 2
CURL_SSLVERSION_SSLv3 // 3
Run Code Online (Sandbox Code Playgroud)

在此支持请求之后修复了此问题:https://bugs.php.net/bug.php?id = 62318

如果要显式使用TLSv1,只需提供1整数文字而不是CURL_SSLVERSION_TLSv1常量.

但是,除非您要连接的服务器需要非常特定的TLS协议版本,否则通常可以将cURL选项保留为其默认值,并让cURL自行确定协议.


Kar*_*bur 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);
Run Code Online (Sandbox Code Playgroud)

...现在我好多了,因为正如助手引用的那样,PHP <5.5中缺少这些常量.