即使使用正确的版本,PHP cURL常量也未定义

时间:2015-05-04 23:21:23

标签: php curl

我最近将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未定义的原因。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

仅当 PHP 已针对较新的libcurl版本重新编译时,这些常量才可用。它们不仅仅通过升级curl而出现。他们被preprocessor directive

看守
#if LIBCURL_VERSION_NUM >= 0x072200

你必须使用该常量的数字等价物,即5