使用PHP下载后PDF文件损坏

使用PHP下载后PDF文件损坏,php,pdf,download,header,Php,Pdf,Download,Header,我正在尝试生成和下载PDF文件。服务器上的生成和存储正在工作 在最后一步中,我想强制下载生成的pdf文件 我正在使用以下代码: $filename = "test.pdf"; $filepath = "path/to/file.pdf"; header("Content-type:application/pdf"); header("Content-Disposition:attachment;filename='".$filename."'"); readfile($filepath);

我正在尝试生成和下载PDF文件。服务器上的生成和存储正在工作

在最后一步中,我想强制下载生成的pdf文件

我正在使用以下代码:

$filename = "test.pdf";
$filepath = "path/to/file.pdf";

header("Content-type:application/pdf");
header("Content-Disposition:attachment;filename='".$filename."'");
readfile($filepath);
下载本身正在工作,但是pdf显示:加载pdf文档时出错

我尝试了其他标题的解决方案(更详细),但似乎没有任何效果。。。有什么想法吗

PS:下载的文件不是空的(文件大小约20 KB,应该是正确的)


更新:只有在本地计算机上运行时才会出现问题。上传到正在工作的服务器…

如果直接从服务器下载PDF文件,而不使用PHP,则会生成有效的PDF,那么我会说PHP很可能会破坏下载的文件。最可能的原因是错误处理程序的输出,如通知或警告

判断是否是这种情况的最佳方法是注释掉
readfile
调用,并保留所有其他内容。然后在文本编辑器中打开生成的文件,查看输出是什么(如果有的话)。如果确实是来自错误处理程序的错误,那么您希望首先修复这些错误

此外,HTTP头名称和值之间应该有一个空格

header("Content-type: application/pdf");
header("Content-Disposition: attachment;filename='".$filename."'");
而不是

header("Content-type:application/pdf");
header("Content-Disposition:attachment;filename='".$filename."'");

因此,如果您不使用PHP直接从服务器下载PDF,它的打开方式会很好吗?是的,它会。。。我可以直接打开它,它正在工作。你可以提供不工作的文件吗?如问题更新中所述:这是因为我在本地机器上运行它。。。在线它现在工作没有readfile调用它不应该知道pdf存储在哪里-或者我错了吗?结果是一个完全空的文件(没有readfile部分)