2010-01-04 98 views
0

在这里看到一个例子:http://mattpotts.com/portal/require_once(../../路径/到/运行script.php)未能打开流权限被拒绝

我把一个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_htmldrwxr-xr-x?鉴于我不希望它可以通过网络访问。但是,权限不应该这样做,如果他们?因为它是通过http访问public_html目录的apache。

回答

1

好吧,如果您已将DocumentRoot正确设置为指向public_html,那么无论您对其拥有何种权限,都无法通过网络访问它。

如果没有您输入.htaccess文件来重定向,则无法从Web访问专用HTMl。如果你不知道这意味着什么/如何去做,你是安全的。

您应该很好地将这些权限设置为任何脚本所需。

+0

谁可以访问?如果我将它从drwx改为drwxr-xr-x? – Matthew 2010-01-04 23:11:19

+0

它不能通过网络访问。但其他FTP用户可以访问它。 (当然,假设没有错误的htaccess文件存在)。 – 2010-01-04 23:12:15

+0

你为什么要让它从public_html访问? – 2010-01-04 23:12:37

3

您不应该在private_html上阻止具有文件夹/文件权限的Web用户,因为它位于Web根目录之外。正如你所说的,网络用户只能得到的东西在的public_html

对于未来的调试速度,如果你有一个相对的网络路径,你可以使用真实路径将其转换为一个真正的路径:

$path = realpath('../../private_html'); 
// $path is now /public_html/foo/private.html or whatever 
+1

private_html上的权限只是它们来的权限。我没有碰过他们。然而... – Matthew 2010-01-04 23:12:54

0

哪些user:groupprivate_html? Web服务器需要是组的成员或文件的所有者。为了读取目录内容,目录需要具有Web服务器的execute权限才能打开它。基本上它们应该与public_html具有相同的user:group。您只是想禁止write权限。托管他的网络服务器。如果您已将文档根目录设置为public_htmlprivate_html无法通过网络访问,无论权限如何。另外,我总是在路径参数和文件操作上使用realpath

相关问题