PHP cURL CURLOPT_HEADERFUNCTION 失败,cURL 代码 23:写入失败 header

PHP cURL CURLOPT_HEADERFUNCTION failing with cURL code 23: Failed writing header

我正在尝试使用 PHP cURL 库对 API 进行简单调用以检索数据。我希望能够存储响应 headers 以及响应 body,为此我使用 CURLOPT_HEADERFUNCTION 如下:

$headers = [];

curl_setopt(
    $cURLHandle,
    CURLOPT_HEADERFUNCTION,
    function ($cURLHandle, $header) use (&$headers) {
        $pieces = explode(":", $header);
        if (count($pieces) >= 2) $headers[trim($pieces[0])] = trim($pieces[1]);
    }
);

但是当我运行上面的代码时,它会产生cURL error #23: Failed writing header

为什么会发生这种情况,我该如何解决?

发生这种情况是因为 header 长度(以字节为单位)需要从您为 CURLOPT_HEADERFUNCTION 提供的函数返回。

相信,虽然我不确定这一点,这是因为PHP needs/wants能够报告[=的长度23=]s 来自 curl_getinfo(...) 个调用。

固定代码如下所示:

$headers = [];

curl_setopt(
    $cURLHandle,
    CURLOPT_HEADERFUNCTION,
    function ($cURLHandle, $header) use (&$headers) {
        $pieces = explode(":", $header);
        if (count($pieces) >= 2) $headers[trim($pieces[0])] = trim($pieces[1]);
        return strlen($header); // <-- this is the important line!
    }
);