PHP Content-Length标头不起作用

nic*_*007 6 php http-content-length http-headers

我正在尝试使用此代码下载.zip文件

<?php
    $file = "something.zip";
    $size = filesize($file);
    header('Content-type: application/octet-stream');
    header("Content-length: $size");
    header('Content-Disposition: attachment; filename="downloaded.zip"');
    readfile($file);
?>
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用,即使我尝试将文件大小设置为类似的数字header("Content-length: 567247784");.我只得到一个没有声明大小的文件,或者只有28个字节的小文件大小.

我看了这个问题,我认为我和海报有同样的问题,但他的解决方案是"存在服务器问题".我想我也有服务器配置问题,但他的回答根本没有帮助我.

Tee*_*sic 15

它与mod_deflate阻碍相关.我花了一天时间搞乱.htaccess并尝试了一百万种不同的东西,最后修复了它,但我无法解释原因:

    header('Content-Length: '.$filesize);
    header("Content-Range: 0-".($filesize-1)."/".$filesize);
Run Code Online (Sandbox Code Playgroud)

我想补充一点,我的PHP配置了少于256MB的内存.

  • 显然,您甚至可以简单地设置“内容范围:0”。我没有发现任何区别。这真的很奇怪。 (3认同)