请在此处查看示例:http://mattpotts.com/portal/
我在所需路径上的每个目录中放置includeme.htm
以查找故障点。它在我的本地机器(Windows)上运行正常,具有相同的目录结构,但在我的远程(linux)服务器上失败。
目录结构:
+-firefli/ drwx--x--x
+-private_html/ drwx------
+-foo/ drwxr-xr-x
+-bar/ drwxr-xr-x
+-portal/ drwxr-wr-w
+-public_html/ drwxr-wr-w
+-foo/ drwxr-wr-w
+-portal/ drwxr-wr-w
权限确认是导致问题的private_html
目录。希望你能看到目录结构的目的,我不知道这是一种常见的做事方式,但它对我有用。好吧,直到现在。
我已经走了很长一段路,但我的问题很简单:将private_html
设置为drwxr-xr-x
是否有任何问题?鉴于我不希望它可以通过网络访问。但权限不应该这样做吗?因为它是apache使public_html
目录可以通过http。
答案 0 :(得分:3)
您不应该在private_html上阻止具有文件夹/文件权限的Web用户,因为它位于Web根目录之外。如你所说,网络用户只能访问public_html中的内容
对于将来的调试速度,如果您有相对Web路径,可以使用realpath将其转换为实际路径:
$path = realpath('../../private_html');
// $path is now /public_html/foo/private.html or whatever
答案 1 :(得分:1)
好吧,如果您已正确设置DocumentRoot
以指向public_html
,则无论您使用什么权限,都无法通过网络访问它。
如果没有放入会重定向的.htaccess文件,则无法从网络访问私有HTMl。如果您不知道这意味着什么/如何做到这一点,那么您就是安全的。
您可以将这些权限设置为您的脚本所需的任何内容。
答案 2 :(得分:0)
user:group
的{{1}}是什么? Web服务器需要是组的成员或文件的所有者。为了读取目录内容,目录需要具有private_html
权限,以便Web服务器打开它。基本上他们应该与execute
具有相同的user:group
。您只是想禁止public_html
权限。他是网络服务员。如果您已将文档根目录设置为write
public_html
,则无论权限如何,都无法通过Web访问。另外,我总是在路径参数和文件操作上使用private_html
。