Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以将服务器上的目录/文件与外部世界屏蔽,但使其可供PHP访问?_Php_Apache_Caching - Fatal编程技术网

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

是否可以将服务器上的目录/文件与外部世界屏蔽,但使其可供PHP访问?,php,apache,caching,Php,Apache,Caching,我一直在想:是否可以屏蔽服务器上的目录/文件,使其不受外部世界的影响,但使其可供PHP访问 这相当简单。我用PHP在服务器上的某个目录中缓存网页,但我不希望web用户直接查看这些文件或此目录。另一方面,PHP必须能够访问这些文件(为用户服务)。这听起来可能不合逻辑,但我想做的是限制用户使用某些页面,并且仍然能够以熟悉Web服务器的格式缓存它们 最好是带有.htaccess或chmod的 谢谢 绝对——事实上,您不需要使用.htaccess。只需将受保护的目录放在您的文档根目录之上(即,将其存储在

我一直在想:是否可以屏蔽服务器上的目录/文件,使其不受外部世界的影响,但使其可供PHP访问

这相当简单。我用PHP在服务器上的某个目录中缓存网页,但我不希望web用户直接查看这些文件或此目录。另一方面,PHP必须能够访问这些文件(为用户服务)。这听起来可能不合逻辑,但我想做的是限制用户使用某些页面,并且仍然能够以熟悉Web服务器的格式缓存它们

最好是带有.htaccess或chmod的

谢谢

绝对——事实上,您不需要使用.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代码可以轻松地从中获取所需的任何内容。)

绝对-事实上,您不需要使用.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)提供文件

好极了!非常感谢,这是一个非常聪明的解决方案。太棒了!非常感谢,这是一个非常聪明的解决方案。