TP5生产开发环境自动切换应用

背景:我们的代码在开发环境和生产环境,都是同一套代码。包括数据库配置等肯定不同,为了完全相同的代码运行在不同的环境中,我们需要一个方式,让我们的代码根据环境的不同,来走不同的配置。我们开始如下的配置:

我们按只有dev和prod两个环境来做配置,可能有时候会有更多的环境,如开发,测试,生产环境等。

不同的环境nginx配置不同的参数。如开发环境我们配置如下:

location ~ \.php {
            root           /Root2/TP5/WebRoot/public;
            fastcgi_pass   127.0.0.1:10080;
            fastcgi_index  index.php;
            fastcgi_split_path_info ^(.+\.php)(.*)$;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  RUNNING_ENV  'dev';
            include        fastcgi_params;
        }

我们增加 fastcgi_param 参数,让其值为dev,来表示这个nginx是dev环境的。我们代码中读此配置,来做环境切换

增加环境的配置文件,如下

project 应用部署目录
├─application 应用目录(可设置)
│ ├─common 公共模块目录(可更改)
│ ├─index 模块目录(可更改)
│ │ ├─config.php 模块配置文件
│ │ ├─common.php 模块函数文件
│ │ ├─controller 控制器目录
│ │ ├─model 模型目录
│ │ ├─view 视图目录
│ │ └─ ... 更多类库目录
│ ├─config  新增的参数目录,可以根据环境自动加载
│ │ ├─dev_config.php
│ │ ├─prod_config.php
│ ├─command.php 命令行工具配置文件
│ ├─common.php 应用公共(函数)文件
│ ├─config.php 应用(公共)配置文件
│ ├─database.php 数据库配置文件

修改原有的config.php

$config =  [
    // +----------------------------------------------------------------------
    // | 应用设置
    // +----------------------------------------------------------------------

    // 应用调试模式
    'app_debug'              => true,
    ///这里省略配置
];

//根据环境配置,读取配置文件
$_ENV = isset($_SERVER['RUNNING_ENV']) ? $_SERVER['RUNNING_ENV'] : 'prod';
$conf_extend = require APP_PATH . "config/{$_ENV}_config.php";
return array_merge($config, $conf_extend);

在dev_config.php中添加需要覆盖的配置

<?php
return [
    // +----------------------------------------------------------------------
    // | 应用设置
    // +----------------------------------------------------------------------
    //这里我们只覆盖一个配置
    // 应用调试模式
    'app_debug'              => true,

];

同理,我们把数据库的配置,也修改为此,即可根据nginx的环境配置,来切换环境了。一套代码可以方便地根据环境不同,来自由切换数据库及配置了。

暂无评论

相关推荐

TP5标签之for循环

我们使用的场景是根据用户级别显示星,几级就显示几星,代码如下其实$vo.svalue是一个整数,代表几星 <td>{$vo.s …

tp5中使用Command计划任务

有时候我们定时执行任务的需求,也可能是为了性能,也有可能是需求,不管如何,我们如何在TP5中配合计划任务完成这一功 …

tp5标签们

一、比较标签如: {比较标签 name="变量" value="值"} 内容 {/比较标签} {eq name="name&quo …

微信扫一扫,分享到朋友圈

TP5生产开发环境自动切换应用