PHP 中缺少一些 CURL 常量
Missing some CURL constants in PHP
我试图在 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
在两台服务器上都很好。
在 cURL 的 7.34.0 中添加了常量 CURL_SSLVERSION_TLSv1_2
。 https://curl.haxx.se/libcurl/c/CURLOPT_SSLVERSION.html 检查您是否可以通过定期更新存储库进行升级(或使用 6
,因为这是常量的值)。
此外,还需要 OpenSSL 1.0.1 或更高版本才能使用 TLS1v2。
我试图在 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
在两台服务器上都很好。
在 cURL 的 7.34.0 中添加了常量 CURL_SSLVERSION_TLSv1_2
。 https://curl.haxx.se/libcurl/c/CURLOPT_SSLVERSION.html 检查您是否可以通过定期更新存储库进行升级(或使用 6
,因为这是常量的值)。
此外,还需要 OpenSSL 1.0.1 或更高版本才能使用 TLS1v2。