3

我整天都在为此煎熬。研究 SO,直到我的眼睛变得模糊......我需要知道:如何访问放置在站点根目录之外的文件?

背景:运行 Linux 的 Apache 2.0 专用服务器。

代码:PHP 和 MySQL

原因:我希望保护文件不会在浏览器中输入文件路径和文件名。

这不会那么困难......但我的分裂头说不然。任何帮助将不胜感激。

4

2 回答 2

4

看看这个问题的答案,它们似乎或多或少地在做同样的事情。

快速总结:readfile()或者file_get_contents()是你所追求的。这个例子来自readfile()页面:

<?php
$file = 'monkey.gif';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
}
?>

我不建议允许$file使用用户输入设置变量!在响应中任意返回文件之前,请考虑文件名的来源。

于 2013-02-26T18:24:49.290 回答
0

您是否尝试访问站点根目录之外的文件?然后你可以在 stackoverflow中查看这个链接。这是 Apache 的官方文档

否则,您不必进行特殊处理以防止其他人访问站点根目录之外的文件。

于 2013-02-26T00:53:36.293 回答