1

如你所知。你必须写open_basedir = '/var/home'等等

我想这样写:open_basedir = '/var/home/*/'

我想要的是 php 应该为每个不同的目录限制主目录中的每个目录。

简短的问题:我怎么能open_basedir这样写:open_basedir = 'var/home/*/'

非常感谢你。

4

2 回答 2

1

如果您想将 PHP 限制在每个用户自己的主目录中,您需要一个 PHP 设置,其中:

  1. PHP 使用用户凭据运行
  2. PHP 接受每个用户的配置

一个典型的案例是 CGI(或 FastCGI)设置,而不是将 PHP 作为 Apache 模块运行。然后,您可以为每个用户提供一个自定义 php.ini 文件。

顺便说一句,我尚未对其进行测试,但可能会open_basedir = "~"按预期工作...

====== 编辑 ======

OP的评论引起的一些澄清:

  1. 在 Unix shell 中,“~”是“当前用户的主目录”的同义词,所以如果你是 john,它是“/var/home/john”,如果你是 michael,它是“/var/home/michael”。"var/home/~/" 没有特殊含义:它只是一个名为 ~ 的目录。

  2. 许多程序都使用这种 shell 约定。我不知道PHP是否这样做。

  3. CGI 允许在服务器上执行任意程序,因此它不如静态 HTML 安全,就像滑板不如航天飞机安全一样。但我们不是在谈论执行任意程序:我们是在谈论执行 PHP 解释器。它将与 PHP 和您的环境一样安全。

  4. 如果您对该主题感兴趣,请访问 Google for FastCGI(具有增强性能的 CGI 实现)。许多托管服务提供商使用它。

于 2010-01-14T10:16:49.767 回答
0

你可以。您必须在指令中指定每个路径:

open_basedir = "/var/home/path1/:/var/home/path2/:/var/home/path3/"
于 2010-01-14T09:49:52.173 回答