2013-05-30 50 views
0

这可能看起来像一个重复的问题,但我已经尝试类似问题中给出的解决方案。拒绝直接访问文件夹中的任何文件使用Apache/PHP

我想限制访问我的apache服务器上的几个文件夹中的文件,以便他们只能通过php脚本服务,只有登录到我的系统应该有权访问任何特定文件夹的用户。

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

deny from all 
allow from 127.0.0.1 

,但似乎从everywhere.Including当地的PHP脚本否认的文件。

我正在考虑.htpasswd,但这是需要处理的用户凭据的额外级别,我愿意避免这种情况。

我该如何解决这个问题?有没有更好的方式来存储文件?

+0

上述解决方案应该可以工作。除非你的本地脚本做了一些奇怪的事情(例如通过http访问本地文件) – 2013-05-30 23:03:43

+0

我知道这也是我的期望。但是当我调用<?php include('file.php')?>它显然不会读取它。我不认为一个包含可能被认为是一件非常奇怪的事情。 –

+1

'.htaccess'选项就是你想要的。它会拒绝整个目录,包括你想要通过的脚本,如果它在那里。解决方案是将脚本移动到其他位置 –

回答

0

不知怎的,PHP是由

deny from all 
allow from 127.0.0.1 

限制包括,需要在受影响的文件夹中的文件。这与我可以从apache文档中读取的内容相反,这应该如何工作,并且我没有真正的答案。这个问题在使用Xampp的本地主机和webhotel one.com上都存在。

我的原始问题很糟糕,因为我使用require来测试当我真的想要使用readfile时是否有读取文件夹的权限。

我主要关心的是,我想提供文件从无法访问的目录下载。 和

readfile($filename); 

仍然可以访问这些文件。

这个问题的灵魂是,我意识到readfile()和include()somhow获得不同的权限。我无法在任何文档中找到它。

0

htaccess无法通过php使用include/require函数拒绝对文件的访问。如果你的php include没有访问这个文件,那么问题就是这个文件的路径。

+0

当我从.htaccess中删除拒绝时,仍然包含作品。无法解释的原因,我很想知道是否有任何错误输出,可以告诉我发生了什么事情。 –