2016-03-17 81 views
3

我想在PHP中使用常量CURL_SSLVERSION_TLSv1_2,但是我得到一個錯誤,表明這樣的常量不存在。在PHP中缺少一些CURL常量

我查了一下PHP手冊(http://php.net/manual/en/curl.constants.php)和它說,不變的是可用,因爲PHP 5.5.19和5.6.3

這是PHP /捲曲版本的輸出我的本地機器,其中恆作品罰款

$ 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

檢查OpenSSL版本(TLS v1.2至少需要1.0.1)。 –

+1

在cURL的7.34.0中添加了常量'CURL_SSLVERSION_TLSv1_2'。 https://curl.haxx.se/libcurl/c/CURLOPT_SSLVERSION.html檢查您是否可以通過常規存儲庫更新進行升級。 –

+0

謝謝,這是問題,在我們的服務器上,我們無法從官方存儲庫升級curl,因此我們需要等待更新,但我們最終使用了「6」,這是該常量的值。如果將此添加爲回答,我會接受它:) – boobiq

回答