为什么
首先,每个框架要保证自己的易用性,不会搞得特别复杂。
然后,实际项目中,作为一个工程,我们要保证团队成员的项目配置傻瓜化。
因此可见,修改入口文件是有足够的必要性的。
操作
修改index.php
文件位置web/index.php
,在前面增加如下内容
$config = __DIR__ . '/../.env'; if(!isset($config)){ return 'no config'; } $configCount = parse_ini_file($config); if(!isset($configCount['APP_ENV']) || !isset($configCount['APP_DEBUG'])){ return 'no config'; }
增加配置模板.env.exp
在项目根目录增加文件.env.exp
APP_ENV=dev APP_DEBUG=true
这里我们定义两项
APP_ENV - 环境 dev/prod
APP_DEBUG - 是否开启debug true/false
增加设置配置文件 set_env.php
$type = $argv['1']; $appEnv = 'dev'; if($type == 1){ $appEnv = 'dev'; } if($type == 2){ $appEnv = 'pre_prod'; } if($type == 3){ $appEnv = 'prod'; } $appDebug = 'true'; if($argv['2'] == 0){ $appDebug = 'false'; } $str = "APP_ENV=$appEnv\nAPP_DEBUG=$appDebug"; file_put_contents(".env",$str);
做这个文件的目的是当我们使用项目部署平台的时候,只要执行脚本中增加php set_env.php 1 1
就可以了。
修改文件web.php
修改读取配置文件config/web.php
,在前面增加如下
$params = require __DIR__ . '/'. YII_ENV.'_params.php'; $db = require __DIR__ . '/'. YII_ENV.'_db.php'; $db2 = require __DIR__ . '/'. YII_ENV.'_db2.php';
读取配置对应的配置文件,这里我读了两个数据库,如果你有多个可以增加更多。
增加配置文件
我们增加对应环境下的各自的配置文件,如图
修改git忽略配置文件.gitgnore
项目的.env
文件是命令执行生成的,所以这个文件不能放在代码仓库中。
.env
总结
这样一套操作下来,我们可以在项目中配置不同环境的配置,一劳永逸。