PHP强制下载可以在本地主机上工作,但不能在托管服务器上工作

PHP强制下载可以在本地主机上工作,但不能在托管服务器上工作,php,http-headers,xampp,localhost,web-hosting,Php,Http Headers,Xampp,Localhost,Web Hosting,我试图使用以下代码强制下载一个文件 header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='backup.zip'); header('Content-Length: '.filesize('backup.zip') ); readfile('backup.zip'); 这在localhost xampp上运行得非常好,但是当我上传到我的托管服务器时

我试图使用以下代码强制下载一个文件

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='backup.zip');
header('Content-Length: '.filesize('backup.zip') );
readfile('backup.zip');
这在localhost xampp上运行得非常好,但是当我上传到我的托管服务器时,它只是在屏幕上打印一些奇怪的字符,如下所示

本周四的PK方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方方ÓPt«:B]ñE3ºk÷G.»JKsÓsšXv/qÊ™T%Iƒ=°½mßCßCÊm~rÒJÉhÉ15; PK|E|UävtxnäU type.csvUT:QT“:QTux ”'KOB1……÷üÒÒjB Y'$mè3dnAøv!“q”381岁的q q 381岁的q q 381岁的那个名男子在该名男子在该名男子在该名男子在该名男子在该名男子在该名男子在该名男子在该名男子在该名男子在该名男子在该名男子在该名男子在该名男子在该名男子在该名男子在该名男子在该名男子在该名男子在该名男子在该名男子在该名男子在该名男子在该名男子在该名在该名男子在该名男子在该名男子在该名男子在该名在该名男子在该名男子在该名男子在该名在该名男子在该名在该名男子在该名在该名男子在该名在该名在该名男子在该名男子在该名在该名在该名在该名在该名在该名男子在该名在该名在该名男子在该名在该名在该名在该名在该名在该名在该名在该名在该名在该“B4-pÄÀ、Cëñ/PK | E ~a3; user.csvUT”:QT:QTux tݿ+-N-ÏLāKÌMÕrÕ338; Còdeibdlhbdb|PK|EeHÐMÕMÕrÕQT:QTuxÕOo 0ð

我在谷歌上做了很多搜索,stackoverflow本身对此有很多问题,但大多数都没有得到回答或者没有得到满意的回答


提示:这可能与输出缓冲区有关。

奇怪的字符以PK开头,因此我认为您正在查看backup.zip的内容记住PKZIP。您的浏览器似乎不知道如何处理它

php提供了一个示例: 其中有更多的标题内容。也许能奏效

在您的示例中,将其声明为附件的标头没有正确的引号。 您可以在文件名周围使用双引号,在文件名后使用额外的单引号,以确保引用正确

header('Content-Disposition: attachment; filename="backup.zip"');
由于引号不正确,整个标题可能无效。

请尝试以下操作

header('Content-Type: application/octet-stream');
header("Content-Disposition: attachment; filename='backup.zip'");
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile('backup.zip');