【问题标题】:Missing some CURL constants in PHPPHP 中缺少一些 CURL 常量
【发布时间】:2016-03-17 19:31:35
【问题描述】:

我正在尝试在 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 在两台服务器上都很好。

【问题讨论】:

  • 检查 OpenSSL 版本(TLS v1.2 至少需要 1.0.1)。
  • 在 cURL 的 7.34.0 中添加了常量 CURL_SSLVERSION_TLSv1_2curl.haxx.se/libcurl/c/CURLOPT_SSLVERSION.html检查是否可以通过定期存储库更新进行升级。
  • 谢谢,这是问题所在,在我们的服务器上,我们无法从官方存储库升级 curl,所以我们需要等待更新,但我们最终使用了“6”,这是该常量的值。 . 如果您将此添加为答案,我会接受它:)

标签: php curl php-curl


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2016-08-29
    • 1970-01-01
    • 2018-01-13
    • 2013-03-10
    • 1970-01-01
    • 2015-09-09
    • 2014-07-26
    • 2013-10-20
    • 1970-01-01
    相关资源
    最近更新 更多