【发布时间】:2016-07-06 22:39:34
【问题描述】:
我想从 Web 根目录上方的文件夹下载文件。假设我想得到这个文件:
/var/pdfs/test.pdf
我的代码是:
$name = "test.pdf";
$url = "/var/pdfs/" . $name;
if (file_exists($url)) {
header("Content-Type: application/pdf");
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename='" . basename($url) . "'");
readfile($url);
} else {
echo "Not found: $url";
}
问题是我总是得到Not found: $url 回声。
我的文件有读取权限:
thecrafter@vps136166:/var/pdfs$ ls -la
total 6484
drwxr--r-- 2 thecrafter root 4096 Jul 7 00:19 .
drwxr-xr-x 13 root root 4096 Jul 7 00:16 ..
-rw-r--r-- 1 thecrafter thecrafter 6629018 Jul 7 00:18 test.pdf
还有目录:
thecrafter@vps136166:/var$ ls -la | grep pdfs
drwxr--r-- 2 thecrafter root 4096 Jul 7 00:19 pdfs
我错过了什么吗?问题出在哪里?
编辑 1
Krzysztof Duszczyk 指出,如果我授予pdfs 目录的执行权限,问题就解决了。事实上,我给了它755,它正在工作。任何想法为什么会发生这种情况?
【问题讨论】:
-
pdfs文件夹有读取权限吗?
-
恕我直言,有同样的问题,检查一下。 stackoverflow.com/a/17896538/6557808
-
@KrzysztofDuszczyk 是的,我编辑了我的问题。
-
嗯,当我重现问题时,向 pdfs 文件夹添加执行权限会有所帮助。真的不知道为什么:)
-
参见this answer 上的要点 3。基本上执行但在目录上是允许用户进入目录并列出/读取内容的。
标签: php