灵活运用 - 自动设置环境

  • 作者:KK

  • 发表日期:2016.10.15


在线下和线上都是通过定义YII_ENV和YII_DEBUG两个常量不同的值来实现运行报错控制的

于是在线下的入口文件代码define('YII_ENV', 'dev'),在线上就是define('YII_ENV', 'prod')

人有粗心的时候,有时候不小心把入口文件给上线了,覆盖掉线上的之后,线上变成了dev环境模式,于是跑出了问题

所以肯定会头疼“哎呀又不小心覆盖了,以后更新都要小心翼翼,不要把敏感配置上线!”


官方的只是示例代码,又不是规定不能改

所以啊,为什么觉得官方给来的代码就不能修改呢?如果一个很熟悉PHP程序开发的人是不会被这些东西所禁锢的!

所以我做了一些判断,大概这样的:

$env = '';
if(
	$_SERVER['SERVER_ADDR'] == '127.0.0.1'
	//or isset($_GET['_debug']),  //必要时解除这个注释实现在线调试
	){
	$env = 'dev';
}elseif($_SERVER['SERVER_ADDR'] == '192.168.1.2'){ //具体改成你的实际测试服务器IP
	$env = 'test';
}else{
	$env = 'prod';
}
define('YII_ENV', $env);
define('YII_DEBUG', YII_ENV != 'prod');

这是一个简单的参考思路,具体的你可以结合自己的项目情况去构思自动设置运行环境标记的逻辑,这样一般情况下都不害怕入口文件被上线了