我使用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。
EDIT:header("Location:$full_path")运行良好,所以我认为它与路径无关。
编辑:$full_path
看起来像-uploads/abc.pdf
,而$file_path
看起来像abc.pdf
文件结构:
--root
downloader.php
---uploads
abc.pdf
看到我对OP的评论确实解决了这个问题。。。
我:
"var_dump();揭示了什么?确保任何地方都没有空格。我在这一点上有点困惑。Fred-ii-"
OP:
"WTF,字符串末尾有一个空白。我真的很抱歉,我从来没有检查过。感谢你们所有人……–codeomnitrix"
我:
trim()
会很快解决这个问题
咨询:http://php.net/manual/en/function.trim.php