Total Pageviews

Friday, 10 May 2013

不同环境 下,代码的可移植性

一般网站平台都会有多个环境,比如程序员开发功能的本地环境localhost、测试人员进行测试功能的测试环境test、与线上很接近的预发布环 境pre,以及线上环境www。基本上功能上线都会经过这几个环境,因为不同环境的配置文件,比如数据库配置文件或其他服务的配置地址都是不一样的。但是 project文件都是一样的,总不能每次发布的时候都去改config.php或database.php信息吧。博主之前的一个公司,当发布代码的时 候,这些文件都是不发布的,是打包发布。但是,这样总是感觉别扭,而且不方便。现在介绍一种方法,是通过PHP的全局变量$_ENV,在不同的环境 export一个变量,然后php来读这个环境变量从代码角度来辨别到底现在是哪个环境。废话少说,进正文。
一、修改php.ini
在php.ini中的variables_order值为"GPCS",也就是说系统在定义PHP预定义变量时的顺序是GET,POST,COOKIES,SERVER,没有定义Environment(E),
你可以修改php.ini文件的variables_order值为你想要的顺序,如:"EGPCS"。这时,$_ENV的值就可以取得了 。
二、设置环境变量
Window下环境变量的设置,可以在我的电脑>属性>高级>环境变量里进行设置,也可以在命令行(cmd)里执行下边语句来设置
1
set TEST_ENV=test
linux环境可以命令行export,但是这种只对当前shell有效,所以,可以编辑/etc/profile
1
export TEST_ENV=test
执行source /etc/profile可以立马生效。那么每次重新登录后都会加载这个环境变量,不需要再重新设置了。关于环境变量可以参考这篇文章。
ps:执行php cgi解析php-fpm.conf的话,需要在php-fpm.conf添加环境变量.