我使用php readfile函数忽略在服务器上提供文件的完整直接url。但是它只显示错误而不是下载文件,说明failed to open stream: No such file or directory in
但是文件位于指定的目录中。
我试图下载的文件是由用户上传的(即httpd进程,我认为,这将是所有者)。但是,以下代码表示无法打开文件 -
$full_path = $row['full_path'];
$file_name = $row['file_path'];
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Content-Type: application/pdf');
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=\"".$file_name."\"");
readfile($full_path);
为目录设置的默认权限为755,我下载的文件也显示权限为755.我无法理解这里的问题是什么。
编辑:服务器是hostgator。
编辑:标题("位置:$ full_path")运行正常,所以我不认为它与路径有关。
编辑:$full_path
看似 - uploads/abc.pdf
而$file_path
看起来像abc.pdf
文件结构:
--root
downloader.php
---uploads
abc.pdf
答案 0 :(得分:3)
看到我对OP的评论确实解决了这个......
我:
“var_dump();揭示了什么?确保在任何地方都没有引入任何空格。我现在有点困惑。弗雷德-ii - ”
OP:
“WTF,字符串末尾有一个空格。我真的很抱歉,我从来没有检查过。感谢你们所有人...... - codeomnitrix” < / p>
我:
trim()
可以在jiffy中修复它