我整天都在为此炒脑。研究SO,直到我的眼睛变得黯淡...我需要知道:我如何访问站点根目录之外的文件?
背景:运行Linux的Apache 2.0专用服务器。
代码:PHP和MySQL
原因:我希望保护文件,防止在浏览器中输入文件路径和文件名。
这不是那么困难......但我的分裂头说不然。任何帮助都绝对值得赞赏。
答案 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。
否则,您无需进行特殊处理以防止他人访问站点根目录以外的文件。