Php 使用未定义的常数CURL_SSLVERSION_TLSv1-假定';卷曲度1和x27;

Php 使用未定义的常数CURL_SSLVERSION_TLSv1-假定';卷曲度1和x27;,php,curl,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;

我使用的是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\u SSLVERSION\u TLSv1-假定“CURL\u SSLVERSION\u TLSv1”

请帮我解决这个错误。对于这个PHP版本,我应该使用什么样的SSL版本?

您应该使用

curl_setopt ( $ch , CURL_SSLVERSION_TLSv1 , true )

实际上,关于这个问题,有一条评论出现在:

请注意,在PHP 5.5之前,缺少以下常量,并且只能通过其数值使用:

CURL_SSLVERSION_DEFAULT // 0
CURL_SSLVERSION_TLSv1  // 1
CURL_SSLVERSION_SSLv2 // 2
CURL_SSLVERSION_SSLv3 // 3
此支持请求后已修复此问题:

如果要显式使用TLSv1,只需提供
1
作为整数文本,而不是
CURL\u SSLVERSION\u TLSv1
常量


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

我刚刚将此添加到启动文件的顶部:

// 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);

…现在我好多了,因为如前所述,PHP<5.5中缺少这些常量。

如何将选项传递给
curl
?使用
curl\u setopt
curl\u setopt\u array
可能只需要为字符串添加缺少的引号?这并不能回答问题,因为您的答案仍然使用假定未定义的常量
curl\u SSLVERSION\u TLSv1
。我根据php.net标准文档给出了这个答案。