# 配置
以下配置遵循ThinkPHP6.0配置规则,数据配置为框架应用新增并保存于数据库的配置
# 系统配置
配置分为系统配置和应用配置,系统配置对所有应用有效。
配置目录
├─app(应用目录)
├─config(框架配置目录)
│ ├─app.php 应用配置
│ ├─cms.php 系统配置
│ ├─cache.php 缓存配置
│ ├─console.php 控制台配置
│ ├─cookie.php Cookie配置
│ ├─database.php 数据库配置
│ ├─filesystem.php 文件磁盘配置
│ ├─lang.php 多语言配置
│ ├─log.php 日志配置
│ ├─middleware.php 中间件配置
│ ├─route.php 路由配置
│ ├─session.php Session配置
│ ├─trace.php Trace配置
│ ├─view.php 视图配置
│ └─ ... 更多配置文件
│
# 应用配置
每个应用可以有独立配置文件,相同的配置参数会覆盖全局配置。
├─app(应用目录)
│ ├─app1 (应用1)
│ │ └─config(应用配置)
│ │ ├─app.php 应用配置
│ │ ├─cache.php 缓存配置
│ │ ├─cookie.php Cookie配置
│ │ ├─database.php 数据库配置
│ │ ├─lang.php 多语言配置
│ │ ├─log.php 日志配置
│ │ ├─route.php 路由配置
│ │ ├─session.php Session配置
│ │ ├─view.php 视图及模板引擎配置
│ │ ├─trace.php Trace配置
│ │ └─ ... 更多配置文件
│ │
│ └─ app2... (更多应用)
│
# 环境配置
可以在根目录下定义一个特殊的.env环境变量文件,用于在开发过程中模拟环境变量配置,
.env文件中的配置参数定义格式采用ini方式(该文件建议在服务器部署的时候忽略)
APP_DEBUG = true
AUTH_DEBUG = true
APP_TRACE = true
[APP]
DEFAULT_TIMEZONE = Asia/Shanghai
[DATABASE]
TYPE = mysql
HOSTNAME = localhost
DATABASE = demo_database
USERNAME = demo_username
PASSWORD = demo_password
HOSTPORT = 3306
CHARSET = utf8
[LANG]
default_lang = zh-cn
由于架构设计原因,下面的配置只能在环境变量中修改。
配置参数 | 默认值 | 描述 |
---|---|---|
APP_TRACE | false | 开启运行日志 |
APP_DEBUG | false | 开启调试模式 |
AUTH_DEBUG | false | 开启权限调试 |
- 如果你的部署环境单独配置了环境变量( 前缀使用PHP_),那么请删除.env配置文件,避免冲突。
- 环境变量配置的参数会全部转换为大写,值为 off,no 和 false 等效于 布尔值false,值为 yes 、on和 true 等效于 布尔值的true。
注意,环境变量不支持数组参数,如果需要使用数组参数可以,可以使用
[DATABASE]
USERNAME = root
PASSWORD = 123456
如果要设置一个没有键值的数组参数,可以使用
PATHINFO_PATH[] = ORIG_PATH_INFO
PATHINFO_PATH[] = REDIRECT_PATH_INFO
PATHINFO_PATH[] = REDIRECT_URL
# 数据配置
数据配置是指声明于应用描述文件(app.json)的配置项目,所有应用数据配置项目均保存于core_config表中,可在管理后台进行更新设置。
每一个项目为一个表单组件,更多表单属性请查看 form-create (opens new window)
一个完整的配置项的定义:
{
"app": "", // 应用标识(默认缺省,安装时自动识别)
"app_title": "", // 应用名称(默认缺省,安装时自动识别)
"group": "站点配置", // 配置分组(可选)
"title": "站点名称", // 配置名称
"type": "input", // 输入类型
"field": "title", // 字段名称(确保同一应用内唯一)
"value": "StartCMS", // 字段值(可选)
"options": [], // 配置选项(可选)
"validate": [], // 验证规则(可选)
"props": {}, // 配置属性(可选)
"default": "", // 默认值(可选)
"remark": "", // 备注(可选)
"locking": 0, // 是否锁定(禁止编辑更新)
"protected": 0 // 是否保护(前端无法获取)
}
# 自定义配置文件
可以直接在相应的全局或应用配置文件中修改或者增加配置参数,如果你要增加额外的配置文件,直接放入配置目录即可(文件名小写)。
注意
除了一级配置外,配置参数名严格区分大小写,建议是使用小写定义配置参数的规范。
# 配置获取和更新
数据配置
数据配置的获取和更新都可通过助手函数conf(app_name.field, value)完成
// 获取应用所有配置(应用名后面的'.'不可缺省)
conf('app.');
// 获取应用单个配置
conf('app.title');
// 更新应用单个配置
conf('app.title', 'new_title');
文件配置
- 使用助手函数config()
// 获取文件所有配置(每个配置文件都是独立的一级配置)
config('app');
config('route');
// 获取单个配置
config('app.title')
config('route.domain');
// 获取数组配置(理论上支持无限级配置参数读取)
config('database.default.host');
- 使用Config类
首先需要在你的类文件中引入,如use think\facade\Config;
然后就可以使用下面的方法读取某个配置参数的值:
// 获取文件所有配置(每个配置文件都是独立的一级配置)
Config::get('app');
Config::get('route');
// 获取单个配置
Config::get('app.title')
Config::get('route.domain');
// 获取数组配置(理论上支持无限级配置参数读取)
Config::get('database.default.host');
// 判断是否存在某个配置参数
Config::has('template');
Config::has('route.route_rule_merge');
// Config类不再支持动态设置某个配置参数,但可以支持批量设置更新配置参数。
Config::set(['name1' => 'value1', 'name2' => 'value2'], 'config');