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

时间:2016-01-24 02:40:02

标签: php json curl

我不断收到此卷曲错误

  

警告curl_setopt()要求参数2为long,给定字符串

     

curl_setopt()期望参数2为long,在/var/www/mbl.domain.com/html/admin/functions/api/jobs_send.php中给出的字符串为706

代码:

$request = urlencode($xml);
$url    = 'http://integrated.com/1.3';
$query  = 'token=' . $token . '&';
$query .= 'idomain=' . $idomain . '&';
$query .= 'cdomain=' . $cdomain . '&';
$query .= 'request=' . $request;
if(!$ch = curl_init()){
    die("Could not init cURL session.\n");
}
curl_setopt($ch, CURLOPT_ENCODING , "gzip"); // we are making our api call fast by 70%
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDSIZE, sizeof($query));
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,0); 
curl_setopt($ch, CURLOPT_TIMEOUT, 40); //timeout in seconds
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
$result = curl_exec($ch);
curl_close($ch);
$xmlObj  = simplexml_load_string($result,"SimpleXMLElement", LIBXML_NOCDATA);

第706行:

curl_setopt($ch, CURLOPT_POSTFIELDSIZE, sizeof($query));

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

PHP中没有CURLOPT_POSTFIELDSIZE这样的选项。当您指定CURLOPT_POSTFIELDS时,会在内部自动为您设置。

您收到的错误是因为PHP看到未定义的常量CURLOPT_POSTFIELDSIZE,将其转换为字符串("CURLOPT_POSTFIELDSIZE"),并将其传递给函数。这会导致错误,因为所有CURLOPT_*常量实际上都是整数。 (未定义的常量到字符串转换将引发警告;如果您正在记录警告/错误,它应该显示在您的日志中。)

另外:不会导致您的问题,但仍然是错误:sizeof($string) === 1sizeofcount的别名,它为标量返回1。对于字符串的长度,您希望改为使用strlen($string)