如何访问站点根目录之外的文件?

时间:2013-02-26 00:45:40

标签: php mysql apache

我整天都在为此炒脑。研究SO,直到我的眼睛变得黯淡...我需要知道:我如何访问站点根目录之外的文件?

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

代码:PHP和MySQL

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

这不是那么困难......但我的分裂头说不然。任何帮助都绝对值得赞赏。

2 个答案:

答案 0 :(得分:4)

看看answers to this question,它似乎或多或少地做了同样的事情。

快速摘要: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变量!在任意返回响应中的文件之前,请考虑文件名的来源。

答案 1 :(得分:0)

您是否尝试访问网站根目录之外的文件?然后你可以查看这个link in stackoverflow。 这是Apache中的official doc

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