我最近将cURL升级到v7.42.1,因为我需要使用常量CURL_SSLVERSION_TLSv1_1,它仅在版本> = 7.34.0中可用。
http://curl.haxx.se/libcurl/c/CURLOPT_SSLVERSION.html
它还需要PHP> = 5.5.19或5.6.3。
http://php.net/manual/en/curl.constants.php
我使用的是PHP v5.5.24。
通过命令行确认正确版本的cURL和PHP:
[root@web ~]# php -v
PHP 5.5.24 (cli) (built: Apr 16 2015 06:33:00)
[root@web ~]# curl -V
curl 7.42.1 (x86_64-redhat-linux-gnu) libcurl/7.42.1 OpenSSL/1.0.1e zlib/1.2.3 c-ares/1.10.0 libidn/1.30 libssh2/1.5.0
还可以通过phpinfo()确认正确的版本:
Core
PHP Version 5.5.24
curl
cURL support enabled
cURL Information 7.42.1
Age 3
Features
AsynchDNS Yes
CharConv No
Debug No
GSS-Negotiate No
IDN Yes
IPv6 Yes
krb4 No
Largefile Yes
libz Yes
NTLM Yes
SPNEGO Yes
SSL Yes
SSPI No
Protocols dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp
Host x86_64-redhat-linux-gnu
SSL Version OpenSSL/1.0.1e
ZLib Version 1.2.3
libSSH Version libssh2/1.5.0
然而,当我尝试在PHP脚本中使用CURL_SSLVERSION_TLSv1_1时(通过apache或命令行),我收到以下通知:
PHP Notice: Use of undefined constant CURL_SSLVERSION_TLSv1_1 - assumed 'CURL_SSLVERSION_TLSv1_1'
操作系统是CentOS 6.6。 PHP通过remi-php55 repo安装,cURL通过city-fan.org repo安装。我通过两个命令多次重启apache:
apachectl restart
service httpd restart
我没有重新启动任何其他服务或服务器本身。
我不知道PHP常量CURL_SSLVERSION_TLSv1_1未定义的原因。任何帮助将不胜感激!
答案 0 :(得分:1)
仅当 PHP 已针对较新的libcurl版本重新编译时,这些常量才可用。它们不仅仅通过升级curl而出现。他们被preprocessor directive:
看守#if LIBCURL_VERSION_NUM >= 0x072200
你必须使用该常量的数字等价物,即5
。