You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP下载PDF文件时提示“无法显示此PDF文档”问题排查

PDF下载后无法打开的问题排查及解决
  • 路径拼接错误:代码里$file_url = "assets$pdf";缺少目录分隔符/,应改为"assets/$pdf"。可以先打印$file_url确认是否指向真实存在的PDF文件,比如添加var_dump($file_url); exit;查看实际路径。
  • 额外输出污染文件:确保代码执行前没有任何多余输出(比如文件开头的空格、BOM,或者之前的echo/var_dump内容)。在readfile($file_url);之后必须加exit;或die();,防止后续代码输出内容破坏PDF结构。
  • 文件权限不足:检查服务器进程是否拥有assets目录下PDF文件的读取权限,权限不足会导致readfile无法读取完整内容,下载的文件损坏。
  • 原PDF文件损坏:直接通过服务器路径访问该PDF,确认文件本身是否能正常打开。如果原文件已损坏,需要重新上传正确的PDF。
  • Header设置不全:补充必要的响应头,尤其是文件长度,帮助浏览器正确识别文件:
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file_url));
    
    另外若文件名含特殊字符,要用urlencode()处理:
    header("Content-Disposition: attachment; filename=".urlencode($slug).".pdf");
    
  • 数据库查询无结果:如果传入的id不存在,$ebookcek2会是空值,导致$file_url指向assets目录,readfile读取目录内容而非PDF。要先判断查询结果是否存在:
    if(!$ebookcek2){
        exit('文件不存在');
    }
    

内容的提问来源于stack exchange,提问作者Samet Dogus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 03:03:36