签入版本

This commit is contained in:
2026-10-08 17:50:29 +08:00
parent 809750b47e
commit e213a9b31d
444 changed files with 39366 additions and 37533 deletions
@@ -3,36 +3,33 @@
## 后端 .env 配置
:::tip 格式说明
`.env` 文件采用 INI 分组格式,`[SECTION]` 表示分组,分组下的 `KEY = value` 对应该分组的配置项。
本项目 `.env` 为**扁平键名**(无分组段),遵循 Laravel 约定;键名与 `config/*.php` 中的 `env()` 读取一一对应。
:::
### 全局变量
### 应用配置
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `APP_ENV` | `local`(示例) | 运行环境(生产设为 `production`) |
| `APP_DEBUG` | `true` | 调试模式(生产环境设为 false) |
| `APP_KEY` | - | 应用密钥(`php artisan key:generate` 生成) |
| `APP_URL` | `http://localhost` | 应用地址 |
| `DEMO_MODE` | `false` | 演示模式开关 |
| `TRUSTED_PROXIES` | (空) | 受信代理 IP(逗号分隔,支持 CIDR),未配置时默认信任 `127.0.0.1` 和 `::1` |
| `DEFAULT_TENANT_ID` | `1` | 默认租户ID,超管操作租户隔离表时自动代入(`config/tenant.php`) |
### 应用配置 `[APP]`
### 数据库配置
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `DEFAULT_TIMEZONE` | `Asia/Shanghai` | 默认时区 |
| `DEMO` | `false` | 演示模式(开启后拦截写操作) |
| `SHOW_ERROR_MSG` | `true` | 显示错误详情(生产环境设为 false) |
### 数据库配置 `[DATABASE]`
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `TYPE` | `mysql` | 数据库类型:mysql / pgsql / sqlsrv / oracle / sqlite |
| `HOSTNAME` | `127.0.0.1` | 数据库主机 |
| `DATABASE` | - | 数据库名(SQLite 为文件路径) |
| `USERNAME` | `root` | 数据库用户 |
| `PASSWORD` | - | 数据库密码 |
| `HOSTPORT` | `3306` | 数据库端口 |
| `CHARSET` | `utf8mb4` | 字符集 |
| `DEBUG` | `true` | 是否开启 SQL 调试 |
| `PREFIX` | `think_` | 表前缀 |
| `DB_CONNECTION` | `sqlite` | 数据库类型:mysql / pgsql / sqlsrv / oracle / sqlite |
| `DB_HOST` | `127.0.0.1` | 数据库主机 |
| `DB_DATABASE` | - | 数据库名(SQLite 为文件路径) |
| `DB_USERNAME` | - | 数据库用户 |
| `DB_PASSWORD` | - | 数据库密码 |
| `DB_PORT` | `3306` | 数据库端口 |
| `DB_CHARSET` | `utf8mb4` | 字符集 |
| `DB_PREFIX` | `laravel_` | 表前缀(**与 SQL 脚本一致,勿改**) |
各数据库默认端口:
@@ -44,50 +41,52 @@
| Oracle | 1521 | - |
| SQLite | - | - |
### JWT 配置 `[JWT]`
### JWT 配置(`config/jwt.php`)
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `SECRET` | 内置默认 | 签名密钥(**生产环境务必修改**) |
| `ACCESS_TTL` | `7200` | access_token 有效期(秒) |
| `REFRESH_TTL` | `604800` | refresh_token 有效期(秒) |
| `ISSUER` | `rxthinkcmf` | 签发者标识 |
| `JWT_SECRET` | (空) | 签名密钥(≥32 字符,**缺失/过短 fail-close**,生产环境务必修改) |
| `JWT_ACCESS_TTL` | `7200` | access_token 有效期(秒) |
| `JWT_REFRESH_TTL` | `604800` | refresh_token 有效期(秒) |
| `JWT_PERMS_TTL` | `7200` | 权限缓存有效期(秒) |
| `JWT_ISSUER` | `rxthinkcmf` | 签发者标识 |
### 文件上传配置 `[FILE]`
### 文件上传配置(`config/file.php`)
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `UPLOAD_DIR` | - | 上传根目录(绝对路径) |
| `DOMAIN_URL` | - | 文件访问域名 |
| `IMAGE_EXT` | `gif,jpg,jpeg,png,bmp,webp,svg` | 图片允许后缀 |
| `FILE_UPLOAD_DIR` | `uploads` | 上传根目录(相对 `public/`) |
| `FILE_DOMAIN_URL` | (空) | 文件访问域名(留空按当前请求域名补全) |
| `FILE_IMAGE_EXT` | `gif,jpg,jpeg,png,bmp,webp` | 图片允许后缀 |
| `FILE_EXT` | 多种后缀 | 文件允许后缀 |
| `MAX_SIZE` | `10` | 最大文件大小(MB) |
| `FILE_MAX_SIZE` | `10` | 最大文件大小(MB) |
### 缓存配置 `[CACHE]`
### 会话 / 缓存 / 队列(Redis 必需)
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `DRIVER` | `file` | 缓存驱动:file / redis |
| `REDIS_HOST` | `127.0.0.1` | Redis 主机(driver=redis 时生效) |
| `REDIS_PORT` | `6379` | Redis 端口(driver=redis 时生效) |
| `REDIS_PASSWORD` | - | Redis 密码 |
| `REDIS_DB` | `0` | Redis 数据库编号 |
| `REDIS_PREFIX` | `rx:` | 缓存键前缀 |
| `SESSION_DRIVER` | `redis` | 会话驱动 |
| `SESSION_LIFETIME` | `120` | 会话过期(分钟) |
| `CACHE_STORE` | `redis` | 缓存驱动 |
| `QUEUE_CONNECTION` | `redis` | 队列驱动 |
| `REDIS_CLIENT` | `phpredis` | Redis PHP 扩展 |
| `REDIS_HOST` | `127.0.0.1` | Redis 主机 |
| `REDIS_PORT` | `6379` | Redis 端口 |
| `REDIS_PASSWORD` | `null` | Redis 密码 |
### CORS 配置 `[CORS]`
### CORS 配置(`config/cors.php`)
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `ALLOW_ORIGIN` | `*` | 允许的跨域来源 |
| `CORS_ALLOW_ORIGIN` | `*` | 允许的跨域来源(生产环境限制为实际域名) |
### API 配置 `[API]`
### API 配置(`config/api.php`)
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `CAMEL_SNAKE_CONVERT` | `true` | 驼峰/下划线自动转换 |
| `PROXY_IPS` | (空) | 受信代理 IP 列表(逗号分隔,支持 CIDR)。部署在 CDN/负载均衡后面时配置,中间件会从 `X-Forwarded-For` / `X-Real-IP` 头提取真实客户端 IP。未配置时默认信任 `127.0.0.1` 和 `::1`。 |
| `API_CAMEL_SNAKE_CONVERT` | `true` | 驼峰/下划线自动转换 |
### 验证码配置 `[CAPTCHA]`
### 验证码配置(`config/captcha.php`)
| 变量 | 默认值 | 说明 |
|------|--------|------|
@@ -95,48 +94,47 @@
| `CAPTCHA_LENGTH` | `6` | 验证码字符长度(4-6位) |
| `CAPTCHA_EXPIRE` | `300` | 过期时间(秒) |
| `CAPTCHA_RATE_WINDOW` | `60` | 防刷窗口期(秒) |
| `CAPTCHA_RATE_LIMIT` | `20` | 窗口期内最大获取次数 |
| `CAPTCHA_RATE_LIMIT` | `10` | 窗口期内最大获取次数 |
| `CAPTCHA_CHARS` | `ABCDEFGHJKLMNPQRSTUVWXYZ2346789` | 字符集 |
| `CAPTCHA_FONT_PATH` | `static/fonts/Vera.ttf` | 字体路径 |
| `CAPTCHA_IMAGE_WIDTH` | `160` | 图片宽度(像素) |
| `CAPTCHA_IMAGE_HEIGHT` | `50` | 图片高度(像素) |
| `CAPTCHA_IMAGE_WIDTH` / `HEIGHT` | `160` / `50` | 图片尺寸(像素) |
| `CAPTCHA_FONT_SIZE` | `28` | 字体大小 |
| `CAPTCHA_NOISE_LINES` | `8` | 干扰线数量 |
| `CAPTCHA_NOISE_DOTS` | `500` | 噪点数量 |
| `CAPTCHA_NOISE_LINES` | `6` | 干扰线数量 |
| `CAPTCHA_NOISE_DOTS` | `300` | 噪点数量 |
### 代码生成器配置 `[GENERATOR]`
### 代码生成器配置(`config/generator.php`)
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `PARENT_MENU_ID` | `189` | 生成模块的父菜单ID |
| `APP_NAME` | `tool` | 模块应用名(路由前缀) |
| `GENERATOR_PARENT_MENU_ID` | `189` | 生成模块的父菜单ID |
| `GENERATOR_APP_NAME` | `tool` | 模块应用名(路由前缀、前端目录) |
### 国际化配置 `[LANG]`
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `default_lang` | `zh-cn` | 默认语言 |
## 前端环境变量
## 前端环境变量(`ui/.env*`)
| 变量 | 说明 |
|------|------|
| `VITE_GLOB_API_URL` | API 基础路径(如 `/api`) |
| `VITE_GLOB_API_URL_PREFIX` | API 前缀 |
| `VITE_GLOB_API_URL` | API 基础路径(留空表示同源) |
| `VITE_GLOB_API_URL_PREFIX` | API 前缀(默认 `/api`) |
| `VITE_GLOB_UPLOAD_URL` | 图片上传地址(跨域部署时配置) |
| `VITE_GLOB_IMG_URL` | 图片前缀地址 |
| `VITE_PORT` | 开发端口(默认 8001) |
| `VITE_DROP_CONSOLE` | 构建时删除 console |
## 配置文件对照
| .env 分组 | 配置文件 | 主要配置键 |
| .env 变量前缀 | 配置文件 | 主要配置键 |
|-----------|---------|-----------|
| `[DATABASE]` | `config/database.php` | `type` / `hostname` / `database` / `username` / `password` |
| `[JWT]` | `config/jwt.php` | `secret` / `access_ttl` / `refresh_ttl` |
| `[FILE]` | `config/file.php` | `upload_dir` / `domain_url` / `max_size` |
| `[CACHE]` | `config/cache.php` | `driver` / `redis_host` / `redis_port` |
| `[CORS]` | `config/cors.php` | `allow_origin` |
| `[API]` | `config/api.php` | `camel_snake_convert` |
| `[CAPTCHA]` | 无配置文件,`CaptchaService` 直接读取 `env()` | `captcha_bypass_code` / `captcha_length` / `captcha_expire` |
| `[LANG]` | `config/lang.php` | `default_lang` |
| — | `config/tenant.php` | `default_tenant_id` |
| `DB_*` | `config/database.php` | `default` / `connections.*` |
| `JWT_*` | `config/jwt.php` | `secret` / `access_ttl` / `refresh_ttl` / `perms_ttl` / `issuer` |
| `FILE_*` | `config/file.php` | `upload_dir` / `domain_url` / `temp_dir` / `image_ext` / `file_ext` / `max_size` |
| `CACHE_STORE` / `REDIS_*` | `config/cache.php`、`config/database.php` | `default` / `stores.redis` |
| `CORS_ALLOW_ORIGIN` | `config/cors.php` | `allow_origin` |
| `API_CAMEL_SNAKE_CONVERT` | `config/api.php` | `camel_snake_convert` / `convert_except_params` |
| `CAPTCHA_*` | `config/captcha.php` | 全部验证码参数 |
| `GENERATOR_*` | `config/generator.php` | `parent_menu_id` / `app_name` / `template_dir` / `backend_outputs` |
| `DEFAULT_TENANT_ID` | `config/tenant.php` | `default_tenant_id` |
| `TRUSTED_PROXIES` | `config/app.php` | `trusted_proxies` |
| `APP_TIMEZONE` | `config/app.php` | `timezone` |
### 租户配置