是否可以屏蔽服务器上的目录/文件与外部世界,但是可以让PHP访问它?

Rei*_*ies 1 php apache caching

我一直想知道:是否有可能屏蔽服务器上的目录/文件与外界,但让它可以访问PHP?

这很简单.我在某个目录中使用PHP在我的服务器上缓存网页,但我不希望网络用户直接查看这些文件或此目录.另一方面,PHP必须能够访问这些文件(向用户提供服务).这可能听起来不合逻辑,但我想要做的是限制用户某些页面,并仍然能够以精通网络服务器的格式缓存它们.

最好是带有.htaccess或chmod的东西.

谢谢!

Eri*_*ric 6

绝对 - 事实上,你不需要使用.htaccess.只需将受保护的目录放在文档根目录上(即将其存储在PHP脚本存储的文件夹旁边,通常是"htdocs","httpdocs"或有时只是"www").

所以你的网络文件就在/my/folders/httpdocs/,你的"受保护"文件就在/my/folders/protected_folder/

这里的想法是PHP可以访问服务器上的任何文件夹,但Apache不会让用户导航到根目录"之上".

要访问该目录,您可以使用:

$protected_path = $_SERVER['DOCUMENT_ROOT'].'/../protected_folder/';

(顺便提一下,你提到你这样做是为了缓存页面 - 你可能想看看Smarty,PHP模板引擎,它预先编译你的模板,也支持真正的智能缓存.事实上,其中一个Smarty"最佳实践"是配置您的结构,因此模板和缓存文件不在document_root文件夹中或下面,因此从Apache进入的用户永远无法访问它们,但Smarty PHP代码可以轻松地从中获取所需的任何内容.)