【发布时间】:2016-04-12 17:15:10
【问题描述】:
我正在使用 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。
编辑: header("Location: $full_path") 工作正常,所以我认为它与路径无关。
编辑:$full_path 看起来像 - uploads/abc.pdf 而 $file_path 看起来像 abc.pdf
文件结构:
--root
downloader.php
---uploads
abc.pdf
【问题讨论】:
-
嗯,它并不是说找不到文件是为了好玩。使用的路径可能有问题。请告诉我们
$row['full_path'];、$row['file_path']等中的内容。 -
755 on files 使它们成为可执行文件。尝试将其更改为 644。
-
@Oldskool 我已编辑问题以包含您询问的详细信息。你能再看看吗...谢谢
-
@Fred-ii- 是的,我只是临时制作的
-
@codeomnitrix 啊,所以my comment 关于检查空格的问题有帮助。使用
trim()会很快解决这个问题。值得我回答,是/否? ;-) 不客气。
标签: php apache download permissions