配置说明
本节说明系统配置、应用配置与SQL配置的存放位置与常用项,适用于通用场景。
系统配置在 server/.env.php,应用配置在 server/app/useApp.php,SQL表结构在 server/app/useSQL.php,运行时可用 Anon_Env 读取环境常量。
系统配置 (.env.php)
系统配置文件位于 server/.env.php,通常通过安装向导自动生成:
php
define('ANON_APP_MODE', 'api'); // 或 'cms',安装时选择
define('ANON_DB_HOST', 'localhost');
define('ANON_DB_PORT', 3306);
define('ANON_DB_PREFIX', 'anon_');
define('ANON_DB_USER', 'root');
define('ANON_DB_PASSWORD', 'password');
define('ANON_DB_DATABASE', 'database_name');
define('ANON_DB_CHARSET', 'utf8mb4');
define('ANON_INSTALLED', true);
define('ANON_APP_KEY', 'base64:随机生成的密钥');注意:建议使用安装向导进行配置,手动编辑可能导致配置错误。
应用配置 (useApp.php)
php
return [
'app' => [
// 注意:mode 配置已移至 .env.php 中的 ANON_APP_MODE 常量
// CMS 相关配置已移至数据库 options 表
'autoRouter' => true,
'debug' => [
'global' => false, // 全局调试
'router' => false, // 路由调试
],
'avatar' => 'https://www.cravatar.cn/avatar', // 头像源URL
'token' => [
'enabled' => true, // 是否启用Token验证
'refresh' => false, // 是否在验证后自动刷新Token生成新Token
'whitelist' => [
'/auth/login',
'/auth/logout',
'/auth/check-login',
'/auth/token',
'/auth/captcha'
], // Token验证白名单路由
],
'captcha' => [
'enabled' => true, // 是否启用验证码
],
'cache' => [
'enabled' => true, // 是否启用全局缓存
'time' => 3600,
'exclude' => [
'/auth/', // 所有认证相关接口
'/anon/debug/', // Debug 接口
'/anon/install', // 安装接口
], // 自动排除缓存的路径模式
],
'security' => [
'csrf' => [
'enabled' => true, // 是否启用 CSRF 防护
'stateless' => true,
],
'xss' => [
'enabled' => true, // 是否启用 XSS 自动过滤
'stripHtml' => true, // 是否移除 HTML 标签
'skipFields' => ['password', 'token', 'csrf_token'], // 跳过的字段
],
'sql' => [
'validateInDebug' => true, // 在调试模式下验证 SQL 查询安全性
],
],
'rateLimit' => [
'register' => [
'ip' => [
'enabled' => true, // 是否启用IP限制
'maxAttempts' => 5, // 每小时最大注册次数
'windowSeconds' => 3600,
],
'device' => [
'enabled' => true, // 是否启用设备指纹限制
'maxAttempts' => 3, // 每小时最大注册次数
'windowSeconds' => 3600,
],
],
],
],
];CMS 模式配置说明
CMS 模式的配置存储在数据库 options 表中,安装时会自动初始化。可以通过 Anon_Cms_Options 类访问:
php
// 获取主题名称
$theme = Anon_Cms_Options::get('theme', 'Default');
// 获取 API 前缀
$apiPrefix = Anon_Cms_Options::get('apiPrefix', '/api');
// 获取路由配置
$routes = json_decode(Anon_Cms_Options::get('routes', '[]'), true);
// 设置配置
Anon_Cms_Options::set('theme', 'MyTheme');CMS 配置项:
theme: 主题名称,对应app/Theme/{themeName}/目录apiPrefix: API 路由前缀,默认为/apiroutes: CMS 路由配置,JSON 格式title: 网站标题description: 网站描述keywords: 网站关键词
路由配置格式:
json
{
"/post/{id}": "post",
"/page/{slug}": "page"
}SQL 安装配置 (useSQL.php)
安装时使用的 SQL 语句配置,用于创建数据库表结构。
php
<?php
if (!defined('ANON_ALLOWED_ACCESS')) exit;
return [
'users' => "CREATE TABLE IF NOT EXISTS `{prefix}users` (
`uid` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '用户 ID',
`name` VARCHAR(255) NOT NULL UNIQUE COMMENT '用户名',
`password` VARCHAR(255) NOT NULL COMMENT '密码哈希值',
`email` VARCHAR(255) NOT NULL UNIQUE COMMENT '邮箱地址',
`group` VARCHAR(255) NOT NULL DEFAULT 'user' COMMENT '用户组',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户信息表'"
];使用 {prefix} 作为表前缀占位符,安装时会自动替换为 env.php 中配置的表前缀。
- 可以添加多个表的 SQL 语句,安装系统会自动执行所有 SQL
- 每个表的 SQL 语句必须是完整的 CREATE TABLE 语句
用户组说明
admin:管理员editor:编辑user:普通用户
说明:管理后台对外显示用户组为 admin/editor/user。数据库内部若存在历史值 author,会映射为 editor 展示。
配置访问
Anon_System_Env
php
// 获取配置值,自动缓存,首次解析后存入内存
$enabled = Anon_System_Env::get('app.token.enabled', false);
$host = Anon_System_Env::get('system.db.host', 'localhost');
$whitelist = Anon_System_Env::get('app.token.whitelist', []);
// 清除配置缓存
Anon_System_Env::clearCache();性能优化: 配置值会自动缓存,首次解析后存入内存,后续调用直接读取缓存,提升性能。
Anon_System_Config
php
// 添加路由
Anon_System_Config::addRoute('/api/custom', function() {
Anon_Http_Response::success(['message' => '自定义路由']);
});
// 添加错误处理器
Anon_System_Config::addErrorHandler(404, function() {
Anon_Http_Response::notFound('页面不存在');
});
// 获取路由配置
$config = Anon_System_Config::getRouterConfig();
// 返回: ['routes' => [...], 'errorHandlers' => [...]]
// 检查是否已安装
$installed = Anon_System_Config::isInstalled();
// 返回: bool