2015-01-31

[轉載] PHP 配置open_basedir,让各虚拟站点独立运行

轉載自:PHP 配置open_basedir,让各虚拟站点独立运行 - canbeing - 博客园

open_basedir 可将用户访问文件的活动范围限制在指定的区域,通常是其家目录的路径,也可用符号"."来代表当前目录。open_basedir 也可以同时设置多个目录, 在 Windows 中用分号(;)分隔目录,在任何其它系统中用冒号(:)分隔目录。当其作用于 Apache 模块时,父目录中的 open_basedir 路径自动被继承。

以下以 Linux 系统下的配置为例:

方法一:在 php.ini 里配置
open_basedir = .:/tmp/

方法二:在 Apache 配置的 VirtualHost 里设置
php_admin_value open_basedir .:/tmp/

方法三:在 Apache 配置的 Direcotry .htaccess 里设置
php_admin_value open_basedir .:/tmp/


关于三个配置方法的解释:
  1. 方法二的优先级高于方法一,也就是说方法二会覆盖方法一
    方法三的优先级高于方法二,也就是说方法三会覆盖方法二
  2. 配置目录里加了 /tmp/ 是因为php默认的临时文件(如上传的文件、session 等)会放在该目录,所以一般需要添加该目录,否则部分功能将无法使用
  3. 配置目录里加了 . 是指运行php文件的当前目录,这样做可以避免每个站点一个一个设置
  4. 如果站点还使用了站点目录外的文件,需要单独在对应 VirtualHost 设置该目录

0 回應: