🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## **推荐.env( 环境变量定义) 配置文件** >[danger] 1.其中两项配置`app_debug`、`config_ext`只在.env生效 参见开启调试模式及代码跟踪器 > 2.除了一级配置外,配置参数名严格区分大小写,建议是使用小写定义配置参数的规范。 > 3.在.env中的**值**推荐用引号,否则坑死都不知道怎么死的 > 默认安装后的根目录有一个`.example.env`环境变量示例文件,你可以直接改成`.env`文件后进行修改。 > 如果你的部署环境单独配置了环境变量( 环境变量的前缀使用`PHP_`),那么请删除`.env`配置文件,避免冲突。 > >[info]### 配置定义格式: ``` APP_DEBUG = true ;数据库配置项 [DATABASE] TYPE = mysql HOSTNAME = 127.0.0.1 DATABASE = test USERNAME = username PASSWORD = password ;数组形式 ARR[]=1 ARR[]=2 ;数组形式 [TEST] PATHINFO_PATH[] = ORIG_PATH_INFO PATHINFO_PATH[] = REDIRECT_PATH_INFO PATHINFO_PATH[] = REDIRECT_URL ``` ### **env( 环境变量定义)的获取** >[info] ### `\think\facade\Env::get('ARR');`结果: ~~~ array ( 0 => '1', 1 => '2', ) ~~~ >[info] ### `\think\facade\Env::get('test.pathinfo_path')`结果: ``` array ( 0 => 'ORIG_PATH_INFO', 1 => 'REDIRECT_PATH_INFO', 2 => 'REDIRECT_URL', ) ``` >[info]### `\think\facade\Env::get();`结果: ``` array ( 'APP_DEBUG' => '1', 'DATABASE_TYPE' => 'mysql', 'DATABASE_HOSTNAME' => '127.0.0.1', 'DATABASE_DATABASE' => 'test', 'DATABASE_USERNAME' => 'username', 'DATABASE_PASSWORD' => 'password', 'TEST_PATHINFO_PATH' => array ( 0 => 'ORIG_PATH_INFO', 1 => 'REDIRECT_PATH_INFO', 2 => 'REDIRECT_URL', ), ) ``` 可以支持默认值,例如: ~~~ // 获取环境变量 如果不存在则使用默认值root Env::get('database.username', 'root'); ~~~ 可以直接在配置文件中使用环境变量进行本地环境和服务器的自动配置,例如: ~~~ return [ 'hostname' => Env::get('hostname','127.0.0.1'), ]; ~~~ >[warning]## **例子:配置数据库**: ``` APP_DEBUG = true ;开启跟踪器 APP_TRACE = true [APP] DEFAULT_TIMEZONE = Asia/Shanghai default_app = admin ;数据库配置项 [DATABASE] TYPE = mysql HOSTNAME = 127.0.0.1 DATABASE = test USERNAME = username PASSWORD = password HOSTPORT = 3306 CHARSET = utf8 DEBUG = true ;数据库表前缀 prefix = [LANG] default_lang = zh-cn ``` ##### 全局配置 config/database.php ``` <?php use think\facade\Env; return [ // 默认使用的数据库连接配置 'default' => Env::get('database.driver', 'mysql'), // 自定义时间查询规则 'time_query_rule' => [], // 自动写入时间戳字段 // true为自动识别类型 false关闭 // 字符串则明确指定时间字段类型 支持 int timestamp datetime date 'auto_timestamp' => true, // 时间字段取出后的默认时间格式 'datetime_format' => 'Y-m-d H:i:s', // 数据库连接配置信息 'connections' => [ 'mysql' => [ // 数据库类型 'type' => Env::get('database.type', 'mysql'), // 服务器地址 'hostname' => Env::get('database.hostname', '127.0.0.1'), // 数据库名 'database' => Env::get('database.database', ''), // 用户名 'username' => Env::get('database.username', 'root'), // 密码 'password' => Env::get('database.password', ''), // 端口 'hostport' => Env::get('database.hostport', '3306'), // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => Env::get('database.charset', 'utf8'), // 数据库表前缀 'prefix' => Env::get('database.prefix', ''), // 数据库调试模式 'debug' => Env::get('database.debug', true), // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) 'deploy' => 0, // 数据库读写是否分离 主从式有效 'rw_separate' => false, // 读写分离后 主服务器数量 'master_num' => 1, // 指定从服务器序号 'slave_no' => '', // 是否严格检查字段是否存在 'fields_strict' => true, // 是否需要断线重连 'break_reconnect' => false, // 字段缓存路径 'schema_cache_path' => app()->getRuntimePath() . 'schema' . DIRECTORY_SEPARATOR, ], // 更多的数据库配置信息 ], ]; ``` ### **多环境变量配置支持** `V6.0.8+`版本开始,可以支持定义多个环境变量配置文件,配置文件命名规范为 ~~~ .env.example .env.testing .env.develop ~~~ 然后,需要在入口文件中指定部署使用的环境变量名称: ~~~ // 执行HTTP应用并响应 将$http = (new App())->http;改为: $http = (new App())->setEnvName('develop')->http; $response = $http->run(); $response->send(); $http->end($response); ~~~ 或者你可以继承`App`类 然后重载`loadEnv`方法实现 动态切换环境变量配置。 ### 其它配置格式支持 默认的配置文件都是PHP数组方式,如果你需要使用其它格式的配置文件,你可以通过改变`CONFIG_EXT`环境变量的方式来更改配置类型。 在应用根目录的`.env`或者系统环境变量中设置 ~~~ CONFIG_EXT=".ini" ~~~ 支持的配置类型包括`.ini`、`.xml`、`.json`、`.yaml`和`.php`在内的格式支持,配置后全局或应用配置必须统一使用相同的配置类型。