使用apache/php拒绝直接访问文件夹中的任何文件

使用apache/php拒绝直接访问文件夹中的任何文件,php,javascript,mysql,apache,lamp,Php,Javascript,Mysql,Apache,Lamp,这似乎是一个重复的问题,但我已经尝试了类似问题中给出的解决方案 我想限制对apache服务器上几个文件夹中的文件的访问,以便只能通过php脚本向登录到我的系统中应该可以访问任何特定文件夹的部分的用户提供这些文件 其他解决方案建议使用.htaccess deny from all allow from 127.0.0.1 但这似乎否认了来自任何地方的文件,包括本地php脚本 我在考虑.htpasswd,但这是一个需要处理的额外级别的用户凭据,我宁愿避免这样做 我该怎么解决这个问题?有没有更好的存

这似乎是一个重复的问题,但我已经尝试了类似问题中给出的解决方案

我想限制对apache服务器上几个文件夹中的文件的访问,以便只能通过php脚本向登录到我的系统中应该可以访问任何特定文件夹的部分的用户提供这些文件

其他解决方案建议使用.htaccess

deny from all
allow from 127.0.0.1
但这似乎否认了来自任何地方的文件,包括本地php脚本

我在考虑.htpasswd,但这是一个需要处理的额外级别的用户凭据,我宁愿避免这样做


我该怎么解决这个问题?有没有更好的存储文件的方法?

htaccess不能使用include/require函数拒绝通过php访问文件。如果您的php include没有访问文件,那么问题是文件的路径。

不知何故,php受到

deny from all
allow from 127.0.0.1
要在受影响的文件夹中包括和要求文件,请执行以下操作。这与我从apache文档中看到的应该如何工作背道而驰,我没有真正的答案。这个问题在使用Xampp的本地主机和webhotel one.com上都存在

我最初的问题的格式很糟糕,因为当我真的想使用readfile时,我需要测试我是否有对文件夹的读取权限

我主要担心的是,我想从一个无法访问的目录下载文件。 和

readfile($filename);
仍然可以访问这些文件


这个问题的解决办法是我意识到readfile()和include()somhow具有不同的权限。我在任何文档中都找不到这一点。

上述解决方案应该可以工作。除非您的本地脚本正在做一些“奇怪”的事情(例如通过http访问本地文件),否则我知道这也是我所期望的。但当我打电话给它时,它显然不读。我不认为include是一件很奇怪的事情。你想要的就是
.htaccess
选项。它将拒绝整个目录,包括您希望通过其提供服务的脚本(如果在其中)。解决方法是把脚本移到别的地方。你能不能把文件移出web根目录?对于只能通过php脚本提供服务的文件来说,这似乎是一个显而易见的解决方案。这里肯定发生了其他事情。当我从.htaccess中删除拒绝时,include仍然有效。无法解释原因,我想知道是否有任何错误输出可以告诉我发生了什么。