require_once(../../ path / to / script.php)无法打开流权限被拒绝

时间:2010-01-04 23:04:07

标签: php linux security file-permissions

请在此处查看示例: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。

访问

3 个答案:

答案 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