缺少PHP中的一些CURL常量

时间:2016-03-17 19:31:36

标签: php curl php-curl

我试图在PHP中使用常量CURL_SSLVERSION_TLSv1_2,但是我得到的错误是这样的常量不存在。

我检查了PHP手册(http://php.net/manual/en/curl.constants.php)并且它表示该常量自PHP 5.5.19和5.6.3以来可用

这是我本地机器上的PHP / cURL版本的输出,其中常量可以正常工作

$ php -v                                                                                  
PHP 5.6.17-4+deb.sury.org~trusty+1 (cli)                                                               

$ php -i | grep -i curl                                                                   
Additional .ini files parsed => /etc/php/5.6/cli/conf.d/20-curl.ini,                                   
curl                                                                                                   
cURL support => enabled                                                                                
cURL Information => 7.35.0                                                                             

$ php -r var_dump(defined('CURL_SSLVERSION_TLSv1_2')); var_dump(CURL_SSLVERSION_TLSv1_2);
bool(true)                                                                                             
int(6)                                                                                                 

在我尝试运行该脚本的服务器上,它是这样的:

$ php -v
PHP 5.6.18 (cli) (built: Feb  4 2016 09:31:59)

$ php -i | grep -i curl
/etc/php.d/20-curl.ini,
curl
cURL support => enabled
cURL Information => 7.19.7

$ php -r "var_dump(defined('CURL_SSLVERSION_TLSv1_2')); var_dump(CURL_SSLVERSION_TLSv1_2);"
bool(false)
PHP Notice:  Use of undefined constant CURL_SSLVERSION_TLSv1_2 - assumed 'CURL_SSLVERSION_TLSv1_2' in Command line code on line 1
string(23) "CURL_SSLVERSION_TLSv1_2"

正如你所看到的,我有PHP 5.6.8,根据PHP手册应该有这个常量,但是cURL扩展比我本地的更长。

这可能是缺少常数的原因吗?我可以更新PHP的cURL扩展吗?还是有任何其他原因导致它丢失?

其他,较旧的常量,CURL_SSLVERSION_TLSv1在两台服务器上都很好。

1 个答案:

答案 0 :(得分:2)

在7.34.0的cURL中添加了常量CURL_SSLVERSION_TLSv1_2https://curl.haxx.se/libcurl/c/CURLOPT_SSLVERSION.html检查您是否可以通过常规存储库更新进行升级(或使用6,因为这是常量的值)。

同样需要OpenSSL 1.0.1或更高版本才能使用TLS1v2。