Yii2 修改框架入口增加配置适应开发生产环境

简介: Yii2 修改框架入口增加配置适应开发生产环境

为什么

首先,每个框架要保证自己的易用性,不会搞得特别复杂。

然后,实际项目中,作为一个工程,我们要保证团队成员的项目配置傻瓜化。

因此可见,修改入口文件是有足够的必要性的。

操作

修改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

总结

这样一套操作下来,我们可以在项目中配置不同环境的配置,一劳永逸。

相关文章
阿萨聊测试:如何用Postman查看HTTP消息相关内容?
阿萨聊测试:如何用Postman查看HTTP消息相关内容?
580 0
阿萨聊测试:如何用Postman查看HTTP消息相关内容?
|
JavaScript 前端开发 算法
JavaScript 中的 if 判断:深入理解、实战应用与进阶技巧
【4月更文挑战第7天】探索 JavaScript 中的 if 判断语句,它是构建逻辑清晰程序的基础。了解其概念、语法、应用示例及编程技巧,包括条件控制、else if 结构、三目运算符。注意条件表达式简洁性,避免 falsy 值陷阱,利用逻辑运算符优化,并减少 if 嵌套。实践这些技巧将提升编程能力和代码质量。
767 0
|
Linux 网络安全
linux免密登录报错 Bad owner or permissions on /etc/ssh/ssh_config.d/05-redhat.conf
linux免密登录报错 Bad owner or permissions on /etc/ssh/ssh_config.d/05-redhat.conf
820 1
|
5月前
|
API PHP
PHP空值合并运算符:?? 拯救你的 isset() 套娃!
PHP空值合并运算符:?? 拯救你的 isset() 套娃!
|
负载均衡 Java 开发者
Spring Cloud 远程调用:为何选择 HTTP 而非 RPC?
【10月更文挑战第1天】在微服务架构中,远程服务调用是一个核心环节。面对HTTP和RPC(Remote Procedure Call,远程过程调用)这两种通信协议,Spring Cloud 选择了HTTP作为其主要通信手段。本文将深入探讨Spring Cloud选择HTTP而非RPC的原因,以及这一选择在实际工作中的优势。
414 0
Linux Command split 切割文件
Linux Command split 切割文件
|
Java
一行注解,省却百行代码:深度解析@RequiredArgsConstructor的妙用
一行注解,省却百行代码:深度解析@RequiredArgsConstructor的妙用
879 0
|
监控 BI Sentinel
深入理解Sentinel系列-2.Sentinel原理及核心源码分析(下)
深入理解Sentinel系列-2.Sentinel原理及核心源码分析
302 0
|
存储 运维 监控
三大架构图—结合若依权限管理系统
最近在进行架构师的培训,结合具体的项目也许能够帮助我们更好的理解架构对我们而言的意义,今天我着重从技术架构图来讨论架构图的具体应用
|
JSON 负载均衡 网络协议
RPC远程调用协议
RPC远程调用协议
318 0

热门文章

最新文章