2015-10-01 75 views
1

試圖爲CURL編寫init函數。但有錯誤警告:curl_setopt()期望參數2很長,給出的字符串爲

警告:curl_setopt()預計參數2長,串給出

代碼很簡單。

$config['CURLOPT_URL'] = "https://weburl/index.action"; 
$config['CURLOPT_VERBOSE'] = 0; 
$config['CURLOPT_SSLVERSION'] = 3; 
$config['CURLOPT_SSL_VERIFYPEER'] = FALSE; 
$config['CURLOPT_SSL_VERIFYHOST'] = 2; 
$config['CURLOPT_FOLLOWLOCATION'] = 0; 

$tuCurl = curl_init(); 
foreach($this->config as $key => $val) 
{ 
    curl_setopt($tuCurl, $key, $val); 
} 
+1

你嘗試過'curl_setopt_array'嗎? –

+0

對於每個'$ config []'元素,刪除引號 - 即:'$ config [CURLOPT_URL] ='https://weburl.blah';' – RamRaider

回答

3

$keyconstants(長型),而不是字符串,所以

$config['CURLOPT_URL'] = "https://weburl/index.action"; 
$config['CURLOPT_VERBOSE'] = 0; 
$config['CURLOPT_SSLVERSION'] = 3; 
$config['CURLOPT_SSL_VERIFYPEER'] = FALSE; 
$config['CURLOPT_SSL_VERIFYHOST'] = 2; 
$config['CURLOPT_FOLLOWLOCATION'] = 0; 

應該

$config[CURLOPT_URL] = "https://weburl/index.action"; 
$config[CURLOPT_VERBOSE] = 0; 
$config[CURLOPT_SSLVERSION] = 3; 
$config[CURLOPT_SSL_VERIFYPEER] = FALSE; 
$config[CURLOPT_SSL_VERIFYHOST] = 2; 
$config[CURLOPT_FOLLOWLOCATION] = 0; 

一個更好的辦法來做到這一點,但是,使用curl_setopt_array而不是curl_setopt

curl_setopt_array($tuCurl, $config); 
+0

謝謝。我不知道函數curl_setopt_array。 –

0

cURL選項是表示數值的常數。你用它們作爲字符串,這是錯誤的。像這樣做:

$config[CURLOPT_URL] = "https://weburl/index.action"; 
// ... 
3

curl_setopt預計CURLOPT_ *常量之一(這是整數)作爲其第二個參數。

您既可以使用

curl_setopt($tuCurl, constant($key), $val); // notice the constant function 

或使用curl_setopt_array和使用的,而不是你的數組鍵的常量(去掉引號)。

相關問題