分类: LINUX
2014-08-14 11:44:19
方法1:在Nginx配置文件中加入
fastcgi_param PHP_ADMIN_VALUE “[参数名]=[值]“;
例如:
#fastcgi_param PHP_VALUE
sessions.save_path=/home/www/sessions/
fastcgi_param PHP_ADMIN_VALUE
“open_basedir=/usr/local/nginx/html”;
优点:
可以设置变量,就可以写一个在公共文件里面include过来就行了,
比如: fastcgi_param PHP_ADMIN_VALUE
“open_basedir=$host”;
缺点:
$_SERVER里面会多出这个值来,
$_SERVER['PHP_ADMIN_VALUE']=”open_basedir=/home/www/docs”
方法2:在php.ini中加入:
[HOST=]
open_basedir=/usr/local/nginx/html:/tmp
[PATH=/usr/local/nginx/html]
open_basedir=/usr/local/nginx/html:/tmp
优点:
这种方式应该是官方在5.3里面默认提供的,也不会出现多个$_SERVER['PHP_ADMIN_VALUE']值。
缺点:
每添加一个站都要去修改下php.ini,比较麻烦,而且网站多了,就是是一大堆。
方法3:修改php.ini的user_ini.filename
这种个人暂未尝试.
方法4:修改fastcgi.conf(fcgi.conf),要5.3或以上,5.2好像不成功。
增加下面这句:
fastcgi_param PHP_VALUE "open_basedir=$document_root:/tmp/";
方法5:修改php源代码
php5.3同样可以使用php5.2的方式修改源代码.
优点:
设置好了,就和以前一样的使用,不需要再添加任何代码.
缺点:
不利于php升级.
个人推荐方法1和方法3,应为经常修改php.ini不是一个好的方法,至于nginx的配置文件可以用include所以不必修改主配置文件。
最后建议大家把上传目录、session目录也隔离掉,防止包含这2个目录的文件,写shell….