MyBB 1.8.41 配置参数详解
MyBB 1.8.41 三层配置体系详解:inc/config.php 全参数(数据库/后台安全/缓存后端/日志修剪)、ACP Settings 30 组 300 项核心设置实测值、php.ini 与 .htaccess 联动,附 2GB 内存单机生产配置模板与设置失效类 FAQ。
MyBB 1.8.41 配置参数详解
目标:系统梳理 MyBB 1.8.41 的三层配置体系——部署层
inc/config.php、设置层 ACP Settings Editor(mybb_settings表 +inc/settings.php缓存)与运行环境层(php.ini/.htaccess),逐项解释核心参数含义、默认值与改动影响,并给出可直接套用的生产配置模板。全部参数均从 Ubuntu 22.04 实测环境(安装向导完成后)实际采集。
一、环境信息
- 操作系统:Ubuntu 22.04 LTS(x86_64)
- Web 服务器:Apache 2.4.52(mod_php 运行 PHP 8.1.2)
- 数据库:MariaDB 10.6.23
- 论坛软件:MyBB 1.8.41(安装向导默认值基础上实测修改)
- 站点根目录:
/var/www/mybb - 配置文件:
/var/www/mybb/inc/config.php、/var/www/mybb/inc/settings.php - 实测设置规模:30 个设置分组、共 300 项后台设置、安装后 75 张数据库表
二、前置条件
- 已按《Ubuntu 22.04 安装 MyBB 指南》完成安装并能登录 Admin CP;
- 能以命令行方式读取站点目录文件(SSH);
- 涉及数据库层的修改建议先完成一次备份(mysqldump 操作见《MyBB 1.8.41 常用运维命令与排障详解》)。
三、参数查看与修改方式
MyBB 的配置分布在三个层次,作用与修改途径完全不同,先分清层次再动手:
| 层次 | 位置 | 存什么 | 怎么改 |
|---|---|---|---|
| 部署层 | inc/config.php | 数据库连接、缓存后端、后台目录、超级管理员 | 只能 SSH 手工编辑 |
| 设置层(权威) | 数据库 mybb_settings 表 | 全部 300 项后台设置 | Admin CP → Settings(推荐) |
| 设置层(缓存) | inc/settings.php | 设置缓存(PHP 数组平铺) | 系统自动重写,不要手工编辑 |
3.1 设置项的正规修改路径(实测)
以修改论坛名为例:Admin CP → Configuration → Site Details → Board Name,保存后生效。后台每保存一次设置,MyBB 做两件事(源码 inc/functions.php 的 update_settings() 实现):把值写入 mybb_settings 表,并重写 inc/settings.php 缓存文件。文件头部实测内容:
<?php
/*********************************\
DO NOT EDIT THIS FILE, PLEASE USE
THE SETTINGS EDITOR
\*********************************/
$settings['load'] = "0";
$settings['showownunapproved'] = "0";
$settings['purgespammerbanip'] = "1";
$settings['mail_message_id'] = "1";
$settings['adminemail'] = "admin@example.com";
$settings['avataruploadpath'] = "./uploads/avatars";
$settings['uploadspath'] = "./uploads";
⚠️ 这就是"手工改了 settings.php 一保存设置就被覆盖"的原因:该文件只是缓存镜像,权威数据在数据库表。
3.2 直接查数据库确认设置值(实测)
批量核对设置值时可直查数据库(设置名与后台设置项一一对应):
mysql -u mybb -pq1w2e3r4 mybbdb -e "SELECT name,value FROM mybb_settings WHERE name IN ('bbname','bburl','boardclosed');"
实测回显:
name value
boardclosed 0
bbname MyBB Demo Forum
bburl http://localhost:8136
⚠️ 说明:以上为实测环境采集值——实验部署经端口映射对外服务,向导自动探测的
bburl带端口 8136;标准 80 端口部署下该值为http://<服务器地址或域名>,读者以自己后台的值为准。
四、参数总览
4.1 inc/config.php 全参数清单(实测)
安装完成后 inc/config.php 的全部配置键(实测 grep 采集,已含本文实测值):
| 配置键 | 实测值 | 作用 |
|---|---|---|
$config['database']['type'] | mysqli | 数据库驱动(可选 mysqli/mysql_pdo/pgsql/pgsql_pdo/sqlite) |
$config['database']['database'] | mybbdb | 数据库名(SQLite 时为库文件路径) |
$config['database']['table_prefix'] | mybb_ | 表前缀 |
$config['database']['hostname'] | localhost | 数据库主机 |
$config['database']['username'] | mybb | 数据库用户 |
$config['database']['password'] | q1w2e3r4 | 数据库密码 |
$config['database']['encoding'] | utf8mb4 | 连接字符集 |
$config['admin_dir'] | admin | Admin CP 目录名 |
$config['hide_admin_links'] | 0 | 是否隐藏前台指向后台的链接 |
$config['cache_store'] | db | 缓存存储后端(db/memcache/redis) |
$config['memcache']['host'] | localhost | Memcache 主机(cache_store=memcache 时生效) |
$config['memcache']['port'] | 11211 | Memcache 端口 |
$config['redis']['host'] | localhost | Redis 主机(cache_store=redis 时生效) |
$config['redis']['port'] | 6379 | Redis 端口 |
$config['super_admins'] | 1 | 超级管理员 uid 列表(逗号分隔) |
$config['secret_pin'] | '' | ACP 额外 PIN 口令(空=不启用) |
$config['log_pruning'] | array(...) | 各类日志保留天数(见 5.4) |
$config['disallowed_remote_hosts'] | array() | 禁止远程连接的主机黑名单 |
$config['disallowed_remote_addresses'] | array() | 禁止远程连接的地址黑名单 |
4.2 设置分组总览(实测 30 组)
后台 Settings 的全部分组(gid/name/title 与各组设置项数量,实测采集):
| gid | name | title | 项数 |
|---|---|---|---|
| 1 | onlineoffline | Board Online / Offline | 2 |
| 2 | details | Site Details | 16 |
| 3 | general | General Configuration | 24 |
| 4 | server | Server and Optimization Options | 19 |
| 5 | datetime | Date and Time Formats | 6 |
| 6 | forumhome | Forum Home Options | 10 |
| 7 | forumdisplay | Forum Display Options | 9 |
| 8 | showthread | Show Thread Options | 17 |
| 9 | member | Login and Registration Options | 25 |
| 10 | profile | Profile Options | 20 |
| 11 | posting | Posting | 25 |
| 12 | attachments | Attachments | 5 |
| 13 | memberlist | Member List | 5 |
| 14 | reputation | Reputation | 9 |
| 15 | warning | Warning System Settings | 5 |
| 16 | privatemessaging | Private Messaging | 10 |
| 17 | calendar | Calendar | 1 |
| 18 | whosonline | Who's Online | 5 |
| 19 | userpruning | User Pruning | 8 |
| 20 | portal | Portal Settings | 11 |
| 21 | search | Search System | 5 |
| 22 | clickablecode | Clickable Smilies and BB Code | 19 |
| 23 | cpprefs | Control Panel Preferences (Global) | 4 |
| 24 | mailsettings | Mail Settings | 10 |
| 25 | contactsettings | Contact Settings | 6 |
| 26 | purgespammer | Purge Spammer | 7 |
| 27 | stopforumspam | Stop Forum Spam | 10 |
| 28 | statspage | Statistics Page | 4 |
| 29 | forumteam | Forum Team | 3 |
| 30 | hello | Hello World! | 2 |
合计 300 项(各组项数实测加总与全表 COUNT(*) 一致)。第 30 组 hello 是激活内置 Hello World! 插件后新增的分组(实测:未激活插件时为 29 组 298 项)。
五、核心参数分类详解
5.1 数据库连接参数(config.php)
$config['database']['type'] = 'mysqli';
$config['database']['database'] = 'mybbdb';
$config['database']['table_prefix'] = 'mybb_';
$config['database']['hostname'] = 'localhost';
$config['database']['username'] = 'mybb';
$config['database']['password'] = 'q1w2e3r4';
$config['database']['encoding'] = 'utf8mb4';
type:驱动选择。mysqli为默认推荐;同机异构场景可换mysql_pdo/pgsql_pdo;sqlite时database键填库文件路径而非库名。table_prefix:一库多站(同一数据库装两套 MyBB)时区分表组;改它等于逻辑上换一套表,已装站点改前缀会导致全部表"失踪",切勿随意改。encoding:连接字符集。必须填字符集名(utf8mb4),不能填排序规则名——实测填utf8mb4_general_ci会在连接阶段抛出mysqli_sql_exception: Invalid character set was provided(inc/db_mysqli.php:307,实测排障实录见《Ubuntu 22.04 安装 MyBB 指南》 9.2 节)。- 改连接参数无需重启服务(每次请求都会重读 config.php),保存文件即生效。
5.2 后台安全参数(config.php)
$config['admin_dir'] = 'admin';
$config['hide_admin_links'] = 0;
$config['secret_pin'] = '';
$config['super_admins'] = '1';
admin_dir:后台目录名。改为随机串(如admin_9x2k1)是官方推荐的后台加固手段;改名需同步重命名磁盘目录,否则后台 404。hide_admin_links:置 1 后前台页脚不再显示后台入口链接(只是隐藏入口提示,后台地址本身仍可被访问,需配合 admin_dir 改名)。secret_pin:非空时登录 Admin CP 除账号密码外还需输入此 PIN(登录页多一道口令)。生产环境建议启用。super_admins:超级管理员 uid 清单(如'1,5')。超级管理员不受普通管理员组权限限制(如不能被其他管理员编辑),uid 对应mybb_users.uid(实测安装向导创建的 admin 为 uid=1)。
5.3 缓存存储参数(config.php)
$config['cache_store'] = 'db';
$config['memcache']['host'] = 'localhost';
$config['memcache']['port'] = 11211;
$config['redis']['host'] = 'localhost';
$config['redis']['port'] = 6379;
💡 技术拓展:MyBB 的数据缓存后端可选 db / memcache / redis 三种。db(默认)把序列化缓存存
mybb_datacache表——零额外依赖,单机够用;memcache/redis 把热点缓存外移内存,适合多机部署或高并发站点,但需 PHP 装对应扩展且服务可达。实测环境使用默认 db。缓存内容(权限矩阵、版块树等)可通过后台 Cache Manager 重载,实操见《MyBB 1.8.41 常用运维命令与排障详解》。
5.4 日志修剪参数(config.php)
$config['log_pruning'] = array(
'admin_logs' => 365, // 后台日志保留天数
'mod_logs' => 365, // 版主日志保留天数
'task_logs' => 30, // 任务计划运行日志保留天数
'mail_logs' => 180, // 邮件日志保留天数
'user_mail_logs' => 180, // 用户邮件日志
'promotion_logs' => 180 // 用户组晋升日志
);
(以上为 1.8.41 默认结构,键值可按合规要求调整;日志表实测为 mybb_adminlog、mybb_modlog、mybb_tasks 的 tasklog 与 mybb_maillogs 等。)
5.5 站点基础设置(Site Details / Board Online / Offline)
| 设置项 | 实测值 | 说明 |
|---|---|---|
bbname | MyBB Demo Forum | 论坛名称,出现在标题、页头与邮件中 |
bburl | http://localhost:8136(实测环境) | 论坛访问地址。改错会导致样式丢失/登录异常,见 7.3 |
boardclosed | 0 | 1=全站关闭(仅管理员可看),维护窗口用 |
boardclosed_reason | These forums are currently closed for maintenance... | 关闭页提示文案 |
adminemail | admin@example.com | 站长邮箱,论坛发信的发件地址 |
cookiedomain | (空) | Cookie 作用域;跨子域共享登录才需设(如 .example.com) |
cookiepath | / | Cookie 路径;论坛挂在子目录时设 /forums/ |
5.6 注册与登录(Login and Registration Options)
| 设置项 | 实测值 | 说明 |
|---|---|---|
regtype | verify | 注册激活方式:verify(邮件验证)/randompass(随机密码)/admin(管理员审核)/instant(即时激活) |
disableregs | 0 | 1=停止接受新注册 |
betweenregstime | 24 | 同 IP 注册间隔小时数 |
maxregsbetweentime | 2 | 上述间隔窗口内允许的最大注册数(反批量灌水) |
failedlogincount | 10 | 连续登录失败次数阈值(超过触发锁定/验证码,实测关联项 failedcaptchalogincount=3 为触发验证码阈值) |
failedlogintime | 15 | 锁定时长(分钟),另有关联项 loginattemptstimeout=15(失败计数窗口) |
wolcutoffmins | 15 | 在线判定时长(分钟):超过该时间无动作即从在线列表消失 |
5.7 发帖与版面(Posting / Show Thread / Forum Display)
| 设置项 | 实测值 | 说明 |
|---|---|---|
postsperpage | 10 | 每页帖子数(用户可在个人设置覆盖) |
userpppoptions | 5,10,15,20,25,30,40,50 | 用户可自选的每页帖数档位 |
maxmessagelength | 65535 | 帖子最大长度(字节),0=不限 |
postfloodcheck | 1 | 发帖防灌水开关 |
postfloodsecs | 60 | 发帖防灌水间隔(秒):两次发帖最小间隔 |
postmergemins | 60 | 连续跟帖自动合并窗口(分钟),实测配合 postmergesep=[hr] 分隔 |
maxpostimages | 10 | 每帖图片标签上限 |
maxpostvideos | 1 | 每帖视频标签上限 |
polltimelimit | 12 | 发帖后可补投投票的时限(小时),0=不可补 |
hottopic | 20 | 热帖阈值:回复数达 20 标记热点 |
hottopicviews | 150 | 热帖阈值:浏览数达 150 标记热点 |
threadreadcut | 7 | 已读标记保留天数(超期视为未读,减小 tracking 开销) |
5.8 附件与头像(Attachments / Profile)
| 设置项 | 实测值 | 说明 |
|---|---|---|
uploadspath | ./uploads | 附件存储目录(相对站点根;可改站外绝对路径) |
avataruploadpath | ./uploads/avatars | 头像存储目录 |
avatarsize | 25 | 上传头像大小上限(KB) |
maxavatardims | 100x100 | 头像最大尺寸(宽x高像素),配 avatarresizing=auto 自动缩放 |
allowremoteavatars | 1 | 允许用户填远程 URL 头像(1=允许,安全要求高时可关闭) |
maxattachments | 5 | 每帖附件数上限 |
attachthumbnails | yes | 图片附件自动缩略图(配 attachthumbh/attachthumbw=96 实测值) |
单扩展名附件大小上限不在 Settings 里,而是按扩展名存于 mybb_attachtypes 表(实测采样:zip=1024KB、jpg=500KB、png=500KB、doc=1024KB、txt=200KB;groups=-1 表示对全部用户组生效)。后台 Attachments → Attachment Types 可按类型调整。
5.9 搜索与统计(Search System)
| 设置项 | 实测值 | 说明 |
|---|---|---|
searchtype | standard | 搜索后端:standard(LIKE,零依赖)或 fulltext(MySQL 全文索引,大站推荐) |
minsearchword | 0 | 搜索词最小长度,0=用默认(约 4 字符);LIKE 搜索下过小会拖库 |
statslimit | 15 | 首页统计(Most Online 等)保留条数 |
5.10 邮件(Mail Settings)
| 设置项 | 实测值 | 说明 |
|---|---|---|
mail_handler | mail | 发信方式:mail(PHP mail())或 smtp;生产建议 SMTP |
smtp_host | (空) | SMTP 主机(mail_handler=smtp 时生效) |
smtp_port | (空) | SMTP 端口(25/465/587 视服务商) |
mail_message_id | 1 | 生成 Message-ID 头(提升到达率,保持开启) |
5.11 运行环境联动参数(php.ini / .htaccess)
MyBB 自身参数之外,三项 PHP 参数直接约束论坛行为(Ubuntu 下文件为 /etc/php/8.1/apache2/php.ini,实测路径):
| php.ini 参数 | 默认值 | 与 MyBB 的关系 |
|---|---|---|
upload_max_filesize | 2M | 附件实际上传上限 = min(attachsize, upload_max_filesize) |
post_max_size | 8M | 整个 POST 上限,需略大于 upload_max_filesize |
memory_limit | 128M | 后台数据库备份(Database Backups)、计数重建的内存保障 |
.htaccess(包内自带,实测关键规则):Options -MultiViews +FollowSymlinks -Indexes 与 18 条 RewriteRule(forum-N.html、thread-N.html 等友好 URL 映射),依赖 Apache 站点配置 AllowOverride All 生效;admin/backups/.htaccess 内置 Deny from all 保护备份目录。
六、生产配置模板
适用场景:2GB 内存 VPS、单机 LAMP、中小社区(注册用户数千级、日活数百级)。以下为在实测环境基础上调整的生产建议值(改动处加注释):
// inc/config.php 生产模板(2GB 内存单机)
$config['database']['type'] = 'mysqli';
$config['database']['database'] = 'mybbdb';
$config['database']['table_prefix'] = 'mybb_';
$config['database']['hostname'] = 'localhost';
$config['database']['username'] = 'mybb';
$config['database']['password'] = 'q1w2e3r4'; // 换成你的强口令
$config['database']['encoding'] = 'utf8mb4';
$config['admin_dir'] = 'myadmin'; // 后台目录改名(同步 mv /var/www/mybb/admin)
$config['hide_admin_links'] = 1; // 隐藏前台后台入口
$config['secret_pin'] = 'q1w2e3r4'; // ACP 登录附加口令
$config['super_admins'] = '1';
$config['cache_store'] = 'db'; // 单机保持 db;多机/高并发换 redis
$config['log_pruning'] = array(
'admin_logs' => 180, // 按合规要求缩短
'mod_logs' => 180,
'task_logs' => 14,
'mail_logs' => 90,
'user_mail_logs' => 90,
'promotion_logs' => 90
);
配套后台设置建议(ACP Settings 中逐项修改):
| 设置项 | 默认值 | 生产建议 | 理由 |
|---|---|---|---|
boardclosed | 0 | 0 | 平时保持开放,维护时临时置 1 |
searchtype | standard | fulltext | 帖量过万后 LIKE 搜索拖库,切 MySQL 全文索引 |
postfloodsecs | 60 | 30 | 社区活跃度与反灌水平衡 |
loginattempts/loginlocked | 5 / 15 | 5 / 30 | 收紧口令猜测窗口 |
mail_handler | smtp | PHP mail() 易进垃圾箱且排障困难 | |
threadreadcut | 7 | 7 | 保持默认即可,勿设过大 |
配套 php.ini(附件型论坛):
upload_max_filesize = 8M
post_max_size = 10M
memory_limit = 256M
max_execution_time = 120
⚠️ 修改 php.ini 后必须
systemctl reload apache2生效;memory_limit给足 256M 是为了保证后台整库备份与 Recount & Rebuild 不中途 OOM。
七、常见问题(FAQ)
7.1 手工改了 inc/settings.php 为什么被改回?
settings.php 是设置缓存镜像,权威数据在 mybb_settings 表。任何一次后台保存设置都会触发 update_settings() 重写该文件(文件头实测印有 "DO NOT EDIT THIS FILE, PLEASE USE THE SETTINGS EDITOR")。改设置请走 ACP → Settings;批量改可直更数据库后到后台 Cache Manager 重载相关缓存。
7.2 改了 bburl 后样式丢失/登录失效?
bburl 是生成全部链接与 Cookie 的基准。填错(如 http/https 不符、多斜杠、端口缺失)会出现页面无样式(CSS 地址错)或登录后立即被踢(Cookie 域路径不匹配)。解决:直接更数据库核对再进后台修正:
mysql -u mybb -pq1w2e3r4 mybbdb -e "SELECT name,value FROM mybb_settings WHERE name IN ('bburl','cookiedomain','cookiepath');"
实测回显(修正前):
name value
bburl http://localhost:8136
cookiedomain
cookiepath /
把 bburl 改成实际访问地址后,还需到 Cache Manager 重载 settings 相关缓存并清浏览器 Cookie。
7.3 cookie 相关参数怎么配才不会登录循环?
单域名部署保持 cookiedomain 空、cookiepath 为 /;跨子域共享登录(forum.example.com 与 www.example.com)时 cookiedomain 设 .example.com(前导点)。若曾在错误域名下登录过,改后必须清浏览器 Cookie 再验证。
7.4 数据库密码改了之后论坛报连接错误?
数据库侧改完用户口令,必须同步改 inc/config.php 的 $config['database']['password'](部署层参数不会从后台同步)。实测改后立即生效,无需重启服务;如连接池报错可 systemctl reload apache2 复位。
7.5 后台设置项太多找不到目标项?
Settings 页按 30 个分组折叠展示(分组清单见 4.2);ACP 设置页右上角有组内搜索;亦可按 3.2 的 SQL 方式直查 mybb_settings(WHERE name LIKE '%关键词%')定位设置名再回后台改。
八、参考链接
- MyBB 官方安装指南(config.php 来源说明):https://docs.mybb.com/1.8/install/
- MyBB 官方 FAQ(数据库与配置类问题):https://docs.mybb.com/1.8/faq/database-errors/
- MyBB 设置类官方文档入口:https://docs.mybb.com/1.8/administration/
- 本站姊妹篇:《MyBB 1.8.41 介绍与选型指南》、《Ubuntu 22.04 安装 MyBB 指南》、《MyBB 1.8.41 常用运维命令与排障详解》