警告:curl_setopt()期望参数2为long,给定

时间:2015-10-01 12:55:22

标签: php curl

试图为CURL编写init函数。但是有错误

  

警告:curl_setopt()期望参数2为long,字符串为

代码很简单。

$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);
}

3 个答案:

答案 0 :(得分:5)

您的$key应该是constants(长型),而不是字符串,所以

$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);

答案 1 :(得分:3)

curl_setopt期望其中一个CURLOPT_ *常量(整数)作为其第二个参数。

您可以使用

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

或使用curl_setopt_array并使用常量而不是数组键(删除引号)。

答案 2 :(得分:1)

cURL选项是表示数值的常量。你正在使用它们作为字符串,这是错误的。这样做:

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