【发布时间】:2013-12-11 20:22:17
【问题描述】:
出于安全原因,我在 public_html 上方的文件夹中托管了一个文档 - 不能将文件移动到 Web 根目录。
我正在尝试通过 readfile() 访问它们,但无论我下载什么,最终都是 0 字节和一个空文件。我认为问题在于“Content-Length”标头没有得到正确的值,因为 filesize($target) 没有给出输出。
有什么想法吗?包含的代码:
header('Content-Description: File Transfer');
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Transfer-Encoding: binary");
header("Pragma: public");
$file="../docs/$c/$path";
$size=filesize($file); //i think this line is the problem
header ("Content-Length: $size");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$filename\"");
readfile($file_url);
【问题讨论】:
-
如果您没有从
filesize()获得输出,那么您的路径可能是错误的。 -
刚刚测试以确保路径正确 - 确实如此。还有其他想法吗?
-
那么,你有权限问题。
-
filesize() 不能访问上面目录中的文档吗?
-
filesize()和所有 PHP 函数都可以访问您授予用户 PHP 正在运行的访问权限。