TWIG渲染页面如何return Content-Length header?

How to return Content-Length header for TWIG rendered page?

我正在渲染 TWIG 模板以生成要下载的 CSV 文件。为了显示下载进度条,服务器必须 return Content-Length header。

我尝试将 TWIG 模板渲染到一个变量中,计算该字符串的长度,然后在回显渲染模板之前立即输出 content-length header:

$output = $twig->render(...);
header('Content-Length', strlen($output));
echo $output;

但这会引发服务器 500 错误并显示消息 "malformed header from script 'index.php': Bad header: Content-Length"。

我是不是漏掉了什么?看来这应该是微不足道的。

传递给 header() 的第一个参数应该是完整的 header 字符串。我猜您希望 header 函数像 header(field name,field value) 一样接受第一个和第二个参数,但事实并非如此。您应该将 headers 作为单个字符串,如下所示:

// something like 'Content length: 1234'
header('Content-Length: ' . strlen($output));