PHP open_basedir的四种设置方式
open_basedir是php.ini中的一个配置选项,它可将用户访问文件的活动范围限制在指定的区域,
假设open_basedir=/home/wwwroot/home/web1/:/tmp/,那么通过web1访问服务器的用户就无法获取服务器上除了/home/wwwroot/home/web1/和/tmp/这两个目录以外的文件。
注意用open_basedir指定的限制实际上是前缀,而不是目录名。
举例来说: 若"open_basedir = /dir/user", 那么目录 "/dir/user" 和 "/dir/user1"都是可以访问的。所以如果要将访问限制在仅为指定的目录,请用斜线结束路径名。那么open_basedir设置方式有几种呢,下面我们来详细介绍一下。
一、apache或nginx设置
如果是apache+php,在apache vhost文件中增加
php_admin_value open_basedir "/home/www/www.example.com/:/tmp/:/proc/"
整体效果如下<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/www/www.example.com
ServerName www.example.com
php_admin_value open_basedir "/home/www/www.example.com/:/tmp/:/proc/"
<Directory "/home/www/www.example.com">
allow from all Options + Indexes
</Directory>
</VirtualHost>
如果是nginx+php-fpm,就在配置文件下设置
fastcgi_param PHP_VALUE "open_basedir=$document_root:/tmp/:/proc/";
添加后效果如下
location ~ \.php$ {
fastcgi_param PHP_VALUE "open_basedir=$document_root:/tmp/:/proc/";
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
}
二、修改php.ini
修改php.ini,增加
[HOST=www.example.com]
open_basedir=/home/www/www.example.com/:/tmp/:/proc/
[PATH=/home/www/www.example.com]
open_basedir=/home/www/www.example.com/:/tmp/:/proc/
三、.user.ini
在网站根目录下创建.user.ini并写入:
open_basedir=/home/www/www.example.com/:/tmp/:/proc/
四、ini_set
还有一种通过ini_set
ini_set('open_basedir', /home/www/www.example.com/:/tmp/:/proc/ ');
网友评论0