是否可以将服务器上的目录/文件与外部世界屏蔽,但使其可供PHP访问?
我一直在想:是否可以屏蔽服务器上的目录/文件,使其不受外部世界的影响,但使其可供PHP访问 这相当简单。我用PHP在服务器上的某个目录中缓存网页,但我不希望web用户直接查看这些文件或此目录。另一方面,PHP必须能够访问这些文件(为用户服务)。这听起来可能不合逻辑,但我想做的是限制用户使用某些页面,并且仍然能够以熟悉Web服务器的格式缓存它们 最好是带有.htaccess或chmod的 谢谢 绝对——事实上,您不需要使用.htaccess。只需将受保护的目录放在您的文档根目录之上(即,将其存储在存储PHP脚本的文件夹旁边,通常是“htdocs”、“httpdocs”或有时只是“www”) 因此,您的web文件将位于是否可以将服务器上的目录/文件与外部世界屏蔽,但使其可供PHP访问?,php,apache,caching,Php,Apache,Caching,我一直在想:是否可以屏蔽服务器上的目录/文件,使其不受外部世界的影响,但使其可供PHP访问 这相当简单。我用PHP在服务器上的某个目录中缓存网页,但我不希望web用户直接查看这些文件或此目录。另一方面,PHP必须能够访问这些文件(为用户服务)。这听起来可能不合逻辑,但我想做的是限制用户使用某些页面,并且仍然能够以熟悉Web服务器的格式缓存它们 最好是带有.htaccess或chmod的 谢谢 绝对——事实上,您不需要使用.htaccess。只需将受保护的目录放在您的文档根目录之上(即,将其存储在
/my/folders/httpdocs/
中,而您的“受保护”文件将位于/my/folders/protected\u folder/
这里的想法是PHP可以访问服务器上的任何文件夹,但Apache不允许用户在根目录的“上方”导航
要访问该目录,您可以使用:
$protected\u path=$\u服务器['DOCUMENT\u ROOT']./../protected\u文件夹/';
(顺便说一句,您提到您这样做是为了缓存页面——您可能想看看PHP模板引擎,它预编译您的模板,还支持真正的智能缓存。事实上,这是Smarty的“最佳实践”之一“是要配置您的结构,使模板和缓存文件不在文档根文件夹中或其下,这样来自Apache的用户永远无法访问它们,但Smarty PHP代码可以轻松地从中获取所需的任何内容。)绝对-事实上,您不需要使用.htaccess。只需将受保护的目录放在您的文档根目录之上(即,将其存储在存储PHP脚本的文件夹旁边,通常是“htdocs”、“httpdocs”或有时只是“www”)
因此,您的web文件将位于/my/folders/httpdocs/
中,而您的“受保护”文件将位于/my/folders/protected\u folder/
这里的想法是PHP可以访问服务器上的任何文件夹,但Apache不允许用户在根目录的“上方”导航
要访问该目录,您可以使用:
$protected\u path=$\u服务器['DOCUMENT\u ROOT']./../protected\u文件夹/';
(顺便说一句,您提到您这样做是为了缓存页面——您可能想看看PHP模板引擎,它预编译您的模板,还支持真正的智能缓存。事实上,这是Smarty的“最佳实践”之一“是要配置您的结构,使模板和缓存文件不在文档根文件夹中或其下,这样来自Apache的用户永远无法访问它们,但Smarty PHP代码可以轻松地从中获取所需的任何内容。)当然,只需将文件放在web根目录之外的目录中即可。例如,如果您的web根目录是
/usr/local/apache/htdocs/
,那么您可以创建一个/usr/local/apache/private\u cache/
目录,PHP应该可以访问该目录,但无法通过web请求访问该目录
您还可以在要保护的目录中放置一个
.htaccess
文件,该文件包含一行deny from all
。这将阻止Apache(而不是PHP)提供文件 当然,只需将文件放在web根目录之外的目录中即可。例如,如果您的web根目录是/usr/local/apache/htdocs/
,那么您可以创建一个/usr/local/apache/private\u cache/
目录,PHP应该可以访问该目录,但无法通过web请求访问该目录
您还可以在要保护的目录中放置一个
.htaccess
文件,该文件包含一行deny from all
。这将阻止Apache(而不是PHP)提供文件 好极了!非常感谢,这是一个非常聪明的解决方案。太棒了!非常感谢,这是一个非常聪明的解决方案。