代码之家  ›  专栏  ›  技术社区  ›  Matt

要求一次(../../path/to/script.php)无法打开流权限被拒绝

  •  0
  • Matt  · 技术社区  · 15 年前

    请参见以下示例: 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 导致故障的目录。希望您能看到目录结构的用途,我不知道这是否是一种常见的方法,但它对我有用。好吧,直到现在。

    我问了很久,但我的问题很简单:设置有什么问题吗? 私有HTML 成为 drwxr-xr-x ?鉴于我不希望通过网络访问它。但是权限不应该这样做,对吗?因为是阿帕奇制造的 public_html 可通过HTTP访问目录。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Tyler Carter    15 年前

    好吧,如果你把你的 DocumentRoot 正确指向 public_html ,无论您授予它什么权限,都无法从Web访问它。

    如果不放入一个.htaccess文件来重定向它,就无法从Web访问私有HTML。如果你不知道这意味着什么/怎么做,你是安全的。

    您应该可以将这些权限设置为脚本需要的任何内容。

        2
  •  3
  •   Adam Hopkinson    15 年前

    您不需要阻止对私有HTML具有文件夹/文件权限的Web用户,因为它在Web根目录之外。如您所说,Web用户只能访问公共HTML中的内容

    对于未来的调试速度,如果您有相对的Web路径,则可以使用real path将其转换为实际路径:

    $path = realpath('../../private_html');
    // $path is now /public_html/foo/private.html or whatever
    
        3
  •  0
  •   prodigitalson    15 年前

    什么是 user:group 对于 private_html ?Web服务器必须是组的成员或文件的所有者。为了读取目录内容,目录需要 execute 允许Web服务器打开它。基本上他们应该有相同的 用户:组 作为 public_html . 你只是想拒绝 write 许可。到网络服务器。如果将文档根目录设置为 公共HTML 私有HTML 无论权限如何,都无法通过Web访问。而且,我总是用 realpath 在和文件操作的路径参数上。