【问题标题】:Issue with CURL POST request, getting curl_setopt() parameter warningCURL POST 请求出现问题,收到 curl_setopt() 参数警告
【发布时间】:2018-05-16 03:13:29
【问题描述】:

尝试使用 CURL 发送带有 XML 正文的 post 请求,但不断出现以下错误,

Warning: curl_setopt() expects parameter 2 to be long, string given

我正在使用以下 CURL 请求,

$ch = curl_init(POST_URL);

curl_setopt($ch, CURLOPT_MUTE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($ch, CURLOPT_POSTFIELDS, "$xml");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$output = curl_exec($ch);
curl_close($ch);

【问题讨论】:

标签: php curl post


【解决方案1】:

我认为警告是指CURLOPT_MUTE 选项。根据docsCURLOPT_MUTE 在 cURL 7.15.5 中被删除:

CURLOPT_MUTE T​​RUE 对 cURL 函数完全保持沉默。
在 cURL 7.15.5 中删除(您可以改用 CURLOPT_RETURNTRANSFER)

运行您的代码时(PHP 5.5.35,报告所有错误)我收到一条通知:

Notice:  Use of undefined constant CURLOPT_MUTE - assumed 'CURLOPT_MUTE' 

然后是警告:

Warning: curl_setopt() expects parameter 2 to be long, string given

所以似乎 PHP 将 CURLOPT_MUTE 解释为字符串,因此发出警告。

【讨论】:

  • 这表明@Hem 在他的开发系统的 php.ini 中设置了一个危险的 error_reporting 级别。应该是error_reporting= E_ALL。但 Hem 充其量是 error_reporting = E_ALL & ~E_NOTICE,或者可能更糟。他应该解决这个问题(ps,未定义的常量错误已从 PHP5 中的 E_NOTICE 提升为 PHP7 中的 E_WARNING)
  • @hanshenrik 是的,我使用旧的本地服务器来测试代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-01
  • 2016-06-15
  • 2014-03-15
  • 2020-10-17
  • 2019-03-05
  • 1970-01-01
相关资源
最近更新 更多