{{wikiTitle}}
配置说明
复制链接
编辑文档
CRMEB PRO 配置说明
概述
CRMEB PRO 使用多层配置体系,包括框架配置、应用配置和环境变量配置。本文档详细说明各项配置的作用和使用方法。
配置文件结构
config/
├── admin.php # 后台配置
├── ajcaptcha.php # 滑块验证码配置
├── annotation.php # 注解配置
├── app.php # 应用配置
├── auth.php # 权限路由配置
├── cache.php # 缓存配置
├── captcha.php # 验证码配置
├── console.php # 控制台配置
├── cookie.php # Cookie配置
├── database.php # 数据库配置
├── delivery.php # 配送配置
├── filesystem.php # 文件系统配置
├── lang.php # 多语言配置
├── log.php # 日志配置
├── pay.php # 支付配置
├── plat.php # 平台配置
├── printer.php # 打印机配置
├── qrcode.php # 二维码配置
├── queue.php # 队列配置
├── route.php # 路由配置
├── session.php # Session配置
├── sms.php # 短信配置
├── swoole.php # Swoole配置
├── template.php # 模板消息配置
├── throttle.php # 限流配置
├── trace.php # 调试配置
├── upload.php # 上传配置
├── view.php # 视图配置
└── wechat.php # 微信配置
环境变量配置 (.env)
基础配置
# 调试模式
APP_DEBUG = true
# 默认语言
DEFAULT_LANG = zh-cn
# 主机地址(用于生成绝对URL)
HOST = https://yourdomain.com
应用配置
[APP]
# 默认时区
DEFAULT_TIMEZONE = Asia/Shanghai
# 应用密钥(用于加密)
APP_KEY = your_random_key_here
数据库配置
[DATABASE]
# 数据库驱动
DRIVER = mysql
# 数据库类型
TYPE = mysql
# 数据库主机
HOSTNAME = 127.0.0.1
# 数据库名
DATABASE = crmeb_pro
# 用户名
USERNAME = root
# 密码
PASSWORD = your_password
# 端口
HOSTPORT = 3306
# 字符集
CHARSET = utf8mb4
# 表前缀
PREFIX = eb_
# 调试模式
DEBUG = true
Redis配置
[REDIS]
# Redis主机
HOSTNAME = 127.0.0.1
# Redis端口
PORT = 6379
# Redis密码
PASSWORD =
# 数据库序号
SELECT = 0
# 缓存前缀
PREFIX = crmeb_
队列配置
[QUEUE]
# 队列监听名称
LISTEN_NAME =
# 批量队列监听名称
BATCH_LISTEN_NAME =
核心配置详解
1. 应用配置 (app.php)
<?php
return [
// 应用地址
'app_host' => env('APP.HOST', ''),
// 应用的命名空间
'app_namespace' => '',
// 是否启用路由
'with_route' => true,
// 默认应用
'default_app' => 'index',
// 默认时区
'default_timezone' => env('APP.DEFAULT_TIMEZONE', 'Asia/Shanghai'),
// 应用映射(自动多应用模式有效)
'app_map' => [],
// 域名绑定(自动多应用模式有效)
'domain_bind' => [],
// 禁止URL访问的应用列表(自动多应用模式有效)
'deny_app_list' => [],
// 异常页面的模板文件
'exception_tmpl' => app()->getThinkPath() . 'tpl/think_exception.tpl',
// 错误显示信息,非调试模式有效
'error_message' => '页面错误!请稍后再试~',
// 显示错误信息
'show_error_msg' => false,
];
2. 数据库配置 (database.php)
<?php
return [
// 默认数据库连接
'default' => env('DATABASE.DRIVER', 'mysql'),
// 自动写入时间戳
'auto_timestamp' => 'timestamp',
// 时间字段格式
'datetime_format' => 'Y-m-d H:i:s',
// 数据库连接配置
'connections' => [
'mysql' => [
'type' => env('DATABASE.TYPE', 'mysql'),
'hostname' => env('DATABASE.HOSTNAME', '127.0.0.1'),
'database' => env('DATABASE.DATABASE', ''),
'username' => env('DATABASE.USERNAME', 'root'),
'password' => env('DATABASE.PASSWORD', ''),
'hostport' => env('DATABASE.HOSTPORT', '3306'),
'charset' => env('DATABASE.CHARSET', 'utf8mb4'),
'prefix' => env('DATABASE.PREFIX', 'eb_'),
// 断线重连
'break_reconnect' => true,
// 字段缓存
'fields_cache' => !env('APP_DEBUG', false),
// SQL监听
'trigger_sql' => env('APP_DEBUG', true),
],
],
// 分页配置
'page' => [
'pageKey' => 'page',
'limitKey' => 'limit',
'limitMax' => 200,
'defaultLimit' => 10,
]
];
3. 缓存配置 (cache.php)
<?php
return [
// 默认缓存驱动
'default' => env('CACHE.DRIVER', 'redis'),
// 缓存连接配置
'stores' => [
// 文件缓存
'file' => [
'type' => 'File',
'path' => app()->getRuntimePath() . 'cache',
'prefix' => '',
'expire' => 0,
'serialize' => [],
],
// Redis缓存
'redis' => [
'type' => 'redis',
'host' => env('REDIS.HOSTNAME', '127.0.0.1'),
'port' => env('REDIS.PORT', 6379),
'password' => env('REDIS.PASSWORD', ''),
'select' => env('REDIS.SELECT', 0),
'prefix' => env('REDIS.PREFIX', 'crmeb:cache:'),
'expire' => 0,
'timeout' => 0,
'persistent' => false,
'serialize' => [],
],
],
];
4. Swoole配置 (swoole.php)
<?php
return [
'http' => [
// 监听地址
'host' => '0.0.0.0',
// 监听端口
'port' => 20199,
// 应用入口
'app_path' => '',
// 选项
'options' => [
'worker_num' => swoole_cpu_num(),
'task_worker_num' => swoole_cpu_num(),
'enable_coroutine' => true,
'max_request' => 1000000,
'max_wait_time' => 60,
],
],
'websocket' => [
'enable' => true,
'handler' => \app\webscoket\Manager::class,
'ping_interval' => 25000,
'ping_timeout' => 60000,
'room' => [
'type' => 'table',
],
'listen' => [],
'subscribe' => [],
],
// 热更新
'hot_update' => [
'enable' => env('APP_DEBUG', false),
'name' => ['*.php'],
'include' => [app_path()],
'exclude' => [],
],
// 连接池
'pool' => [
'db' => [
'enable' => true,
'max_active' => 3,
'max_wait_time' => 5,
],
'cache' => [
'enable' => true,
'max_active' => 3,
'max_wait_time' => 5,
],
],
// 定时器
'timer' => [
'enable' => env('TIMER_ENABLE', false),
],
];
5. 微信配置 (wechat.php)
<?php
return [
// 公众号配置
'official_account' => [
'app_id' => '',
'secret' => '',
'token' => '',
'aes_key' => '',
],
// 小程序配置
'mini_program' => [
'app_id' => '',
'secret' => '',
'token' => '',
'aes_key' => '',
],
// 开放平台配置
'open_platform' => [
'app_id' => '',
'secret' => '',
'token' => '',
'aes_key' => '',
],
// 微信支付配置
'payment' => [
'merchant_id' => '',
'key' => '',
'cert_path' => '',
'key_path' => '',
'notify_url' => '',
],
// 企业微信配置
'work' => [
'corp_id' => '',
'agent_id' => '',
'secret' => '',
'token' => '',
'aes_key' => '',
],
];
6. 上传配置 (upload.php)
<?php
return [
// 默认上传驱动
'default' => 'local',
// 上传驱动配置
'stores' => [
// 本地上传
'local' => [
'type' => 'local',
'root' => public_path() . 'uploads',
'url' => '/uploads',
],
// 阿里云OSS
'oss' => [
'type' => 'oss',
'accessKeyId' => '',
'accessKeySecret' => '',
'bucket' => '',
'endpoint' => '',
'cdn' => '',
],
// 腾讯云COS
'cos' => [
'type' => 'cos',
'secretId' => '',
'secretKey' => '',
'bucket' => '',
'region' => '',
'cdn' => '',
],
// 七牛云
'qiniu' => [
'type' => 'qiniu',
'accessKey' => '',
'secretKey' => '',
'bucket' => '',
'domain' => '',
],
],
];
7. 队列配置 (queue.php)
<?php
return [
// 默认队列连接
'default' => 'redis',
// 队列连接配置
'connections' => [
'sync' => [
'type' => 'sync',
],
'database' => [
'type' => 'database',
'queue' => 'default',
'table' => 'jobs',
'connection' => null,
],
'redis' => [
'type' => 'redis',
'queue' => env('QUEUE.LISTEN_NAME', 'crmeb'),
'host' => env('REDIS.HOSTNAME', '127.0.0.1'),
'port' => env('REDIS.PORT', 6379),
'password' => env('REDIS.PASSWORD', ''),
'select' => env('REDIS.SELECT', 0),
'timeout' => 0,
'persistent' => false,
],
],
// 失败任务处理
'failed' => [
'type' => 'none',
'table' => 'failed_jobs',
],
];
8. 日志配置 (log.php)
<?php
return [
// 默认日志通道
'default' => env('LOG.CHANNEL', 'file'),
// 日志通道配置
'channels' => [
'file' => [
'type' => 'File',
'path' => app()->getRuntimePath() . 'log',
'level' => [],
'max_files' => 0,
'file_size' => 2097152,
'apart_level' => ['error', 'sql'],
'time_format' => 'c',
'single' => false,
'json' => false,
'format' => '[%s][%s] %s',
],
],
];
9. 限流配置 (throttle.php)
<?php
return [
// 限流开关
'enable' => true,
// 限流缓存驱动
'driver_name' => 'think-throttle',
// 限流规则
'visit_rate' => '60/m',
// 响应体
'visit_fail_code' => 429,
'visit_fail_text' => '访问频率过高,请稍后再试',
];
10. 路由配置 (route.php)
<?php
return [
// URL伪静态后缀
'url_html_suffix' => 'html',
// URL普通方式参数
'url_common_param' => true,
// 是否开启路由延迟解析
'url_lazy_route' => false,
// 是否强制使用路由
'url_route_must' => false,
// 合并路由规则
'route_rule_merge' => false,
// 路由是否完全匹配
'route_complete_match' => false,
// 访问控制器层名称
'controller_layer' => 'controller',
// 空控制器名
'empty_controller' => 'Error',
// 是否使用控制器后缀
'controller_suffix' => false,
// 默认的路由变量规则
'default_route_pattern' => '[\w\.]+',
// 是否开启请求缓存
'request_cache_expire' => null,
// 全局请求缓存排除规则
'request_cache_except' => [],
];
系统配置(数据库存储)
除了文件配置外,CRMEB PRO 还支持在数据库中存储系统配置,通过 eb_system_config 表管理。
获取系统配置
// 获取单个配置
$value = sys_config('site_name');
// 获取多个配置
$config = sys_config(['site_name', 'site_logo']);
// 带默认值
$value = sys_config('site_name', '默认站点名称');
设置系统配置
// 使用 SystemConfigServices
use app\services\system\config\SystemConfigServices;
$configServices = app()->make(SystemConfigServices::class);
$configServices->setConfig('site_name', '新站点名称');
常用系统配置项
| 配置键名 | 说明 | 示例值 |
|---|---|---|
site_name |
站点名称 | CRMEB商城 |
site_logo |
站点Logo | /uploads/logo.png |
site_url |
站点URL | https://demo.crmeb.net |
store_brokerage_statu |
分销开关 | 1 |
store_brokerage_ratio |
一级佣金比例 | 10 |
store_brokerage_two |
二级佣金比例 | 5 |
integral_ratio |
积分抵扣比例 | 1 |
user_extract_min_price |
最低提现金额 | 10 |
配置优先级
配置的加载优先级从高到低:
- 环境变量 (.env)
- 应用配置 (config/*.php)
- 数据库配置 (eb_system_config)
- 默认值
配置使用示例
读取配置
// 读取应用配置
$debug = config('app.app_debug');
// 读取数据库配置
$dbHost = config('database.connections.mysql.hostname');
// 读取环境变量
$appDebug = env('APP_DEBUG', false);
// 读取系统配置
$siteName = sys_config('site_name');
动态设置配置
// 设置运行时配置
config(['app.app_debug' => false]);
// 设置环境变量(仅当前请求有效)
// 不推荐在运行时修改
配置缓存
生成配置缓存
php think optimize:config
清除配置缓存
php think clear --config
最佳实践
1. 敏感信息使用环境变量
// 正确做法
'password' => env('DATABASE.PASSWORD', ''),
// 避免直接写明文密码
'password' => 'my_password', // 不推荐
2. 配置分环境管理
可以创建多个 .env 文件:
.env # 默认环境配置
.env.development # 开发环境
.env.production # 生产环境
3. 合理使用配置缓存
在生产环境中启用配置缓存以提升性能,但在开发环境中不要使用。
4. 配置文件命名规范
配置文件使用小写字母,单词间用下划线分隔,如 system_config.php。
注意事项
- 环境变量优先级:
.env文件中的配置会覆盖config目录下的默认值,注意优先级关系 - 敏感信息保护:数据库密码、API 密钥、支付密钥等敏感信息只能通过
.env配置,禁止硬编码到配置文件 - .env 文件安全:
.env文件不要提交到代码仓库,使用.example.env作为模板 - 配置缓存:生产环境修改配置后需要清除配置缓存(
php think clear --config)才能生效 - 数据库配置:修改数据库连接配置后需要重启 Swoole 服务或 PHP-FPM 才能生效
- Redis 前缀:多项目共用 Redis 时,务必设置不同的
PREFIX避免缓存键冲突 - Swoole 配置:Swoole 相关配置修改后需要重启 Swoole 服务,热重载不会生效
- 系统配置表:后台动态配置存储在
eb_system_config表中,使用sys_config()函数读取
常见问题
Q: 修改配置后不生效?
A: 检查以下几点:1) 是否清除了配置缓存;2) 是否重启了服务(Swoole 模式下必须);3) 确认修改的是正确的配置文件Q: 如何区分开发环境和生产环境的配置?
A: 使用不同的.env文件或通过环境变量控制,在代码中使用env('APP_DEBUG', false)判断环境Q: 数据库连接报错”Access denied”?
A: 检查.env文件中的数据库用户名、密码、主机地址是否正确,确认数据库用户有访问权限Q: Redis 连接失败?
A: 检查 Redis 服务是否启动,.env中的 Redis 主机、端口、密码配置是否正确Q: 如何在代码中获取 .env 配置?
A: 使用env('CONFIG_KEY', 'default_value')函数,第二个参数是默认值Q: 后台系统配置和 config 文件配置有什么区别?
A: config 文件是静态配置,需要重启生效;后台系统配置存储在数据库,修改后立即生效,使用sys_config()读取
评论({{cateWiki.comment_num}})
最新
最早
{{cateWiki.page_view_num}}人看过该文档
评论(0)
最新
最早
170人看过
登录/注册
即可发表评论
{{item.user ? item.user.nickname : ''}}
(自评)
{{item.content}}
搜索结果
为您找到{{wikiCount}}条结果
{{item.page_view_num}}
{{item.like ? item.like.like_num : 0}}
{{item.comment ? item.comment.comment_num : 0}}
位置:
{{path.name}}
{{(i+1) == item.catalogue.path_data.length ? '':'/'}}
