WackoWiki 6.3.0 配置参数详解
拆解 WackoWiki 6.3.0 的四层配置体系,逐组说明 config/config_defaults.php 与 config/config.php 参数、默认值、实测值、修改方式与缓存清理,并给出可用于生产的基础、安全、上传、订阅与缓存模板。
WackoWiki 6.3.0 配置参数详解
目标:把 WackoWiki 6.3.0 的配置体系拆成“默认值 → 站点配置文件 → 数据库设置 → 运行时缓存”四层,逐组说明关键参数、默认值、实测值与修改方式,并给出可直接套用的生产模板。本文基于 WackoWiki 6.3.0(PHP 8.3.36 + MariaDB 11.4.13)实测,命令与回显照抄。软件定位与选型见《WackoWiki 介绍与选型指南》,HTTP 接口调用见《WackoWiki 6.3.0 API 使用详解》。
一、环境信息
- WackoWiki 版本:6.3.0(官方发布日期 2026-07-18)
- 应用运行环境:Apache 2.4.69 + PHP 8.3.36
- 数据库:MariaDB 11.4.13(
11.4.13-MariaDB-ubu2404) - 站点根目录:
/var/www/html(对应宿主机源码目录src/) - 配置文件:
config/config.php(站点级)、config/config_defaults.php(内置默认值) - 配置缓存:
_cache/config/config.php - 后台入口:
/admin.php(需 Wiki 管理员会话 + 恢复口令) - 演示账号:
root/q1w2e3r4(实验环境短口令;生产按 ≥15 位设置) - 实测站点名:
WackoWiki Demo;首页:HomePage
二、前置条件
- 能读写站点根目录下的
config/、_cache/、file/、xml/。 - 有数据库客户端或能执行
mariadb命令的入口,便于核对wacko_config表。 - 已用管理员账号登录前台,并能通过
/admin.php的恢复口令校验。 - 修改任何参数前先备份:
cd /opt/wackowiki/app/wackowiki-6.3.0/src
cp config/config.php config/config.php.bak-$(date +%F)
docker compose exec -T db mariadb-dump -uroot -pq1w2e3r4 --single-transaction wackowiki > /opt/wackowiki/backup-config-$(date +%F).sql
⚠️ 注意:WackoWiki 的配置不是“改一个文件就全部生效”。
config.php、数据库config表与_cache/config/config.php三层可能同时存在同一个键,排查时必须按“数据库 > config.php > 默认值 > 缓存”的顺序确认最终值。
三、参数查看与修改方式
3.1 配置文件的分工
WackoWiki 6.3.0 的配置入口只有两个 PHP 文件:
| 文件 | 作用 | 是否应手工编辑 |
|---|---|---|
config/config_defaults.php | 内置默认值,定义全部可用键与默认行为 | 禁止直接编辑;升级会被覆盖 |
config/config.php | 安装器写入的站点级配置,含数据库连接、base_url、种子与恢复口令 | 可编辑;改后需清缓存 |
数据库 wacko_config 表 | 后台管理面板写入的偏好设置 | 通过后台修改;直接改库需清缓存 |
_cache/config/config.php | 上述配置的序列化缓存 | 不手工编辑;删除后自动重建 |
💡 关于
wakka.config.php:WackoWiki 6.3.0 源码中不存在wakka.config.php。该文件名属于 WakkaWiki 时代的配置约定;WackoWiki 已统一为config/config.php。如果从旧 WakkaWiki 迁移,不能把旧wakka.config.php直接复制过来,必须按 WackoWiki 的键名(如db_driver、db_host、table_prefix、system_seed)重建。
3.2 优先级与生效顺序
class/settings.php 的加载逻辑可以简化为:
- 读
config/config_defaults.php得到默认值; - 读
config/config.php,用array_merge()覆盖默认值; - 连接数据库,读
wacko_config表,逐行覆盖前两层; - 若
_cache/config/config.php存在且可读,直接反序列化该缓存,跳过前三步; - 后台保存设置时更新数据库,并重建缓存。
因此实际生效值是:
数据库 wacko_config > config/config.php > config_defaults.php
(缓存 _cache/config/config.php 存在时,直接以缓存为准)
3.3 查看当前配置
查看站点级配置:
cd /opt/wackowiki/app/wackowiki-6.3.0/src
php -r 'require "config/config.php"; var_export($wacko_config);'
实测输出(节选):
array (
'base_url' => 'http://localhost:8140/',
'db_charset' => 'utf8mb4',
'db_collation' => 'utf8mb4_unicode_520_ci',
'db_driver' => 'mysqli',
'db_engine' => 'InnoDB',
'db_vendor' => 'mariadb',
'db_host' => 'db',
'db_port' => '3306',
'db_name' => 'wackowiki',
'db_user' => 'wacko',
'db_password' => 'q1w2e3r4',
'sql_mode' => '0',
'table_prefix' => 'wacko_',
'system_seed' => 'u^U84ey~0%#}G98zo298',
'recovery_password' => '$2y$10$oit5QUJ842YFxNPqH3MOoO7CF.BipVA3bOSRtDsF6cE11yhfT8h.q',
'hashid_seed' => 'rr!xY51C&yp(4*_66&2]',
'wacko_version' => '6.3.0',
)
查看数据库覆盖值:
docker compose exec -T db mariadb -uroot -pq1w2e3r4 -N -e \
"SELECT config_name, LEFT(config_value,80) FROM wackowiki.wacko_config \
WHERE config_name IN ('site_name','root_page','rewrite_mode','default_read_acl', \
'default_write_acl','upload','upload_max_size','cache','cache_ttl','enable_feeds', \
'xml_sitemap','timezone','language','allow_registration') ORDER BY config_name;"
实测输出:
allow_registration 0
cache 1
cache_ttl 600
default_read_acl *
default_write_acl $
enable_feeds 1
language en
rewrite_mode 1
root_page HomePage
site_name WackoWiki Demo
timezone UTC
upload admins
upload_max_size 512000
xml_sitemap 0
3.4 修改方式
- 安装器阶段:通过 Site Configuration / Database Configuration 页写入
config.php。 - 日常偏好:通过
/admin.php的Preferences模块修改,写入数据库wacko_config表。 - 连接与密钥类:手工编辑
config/config.php,改后删除_cache/config/config.php。 - 清理缓存:后台
Main Menu的Purge cache勾选Config cache提交;或直接删除缓存文件:
rm -f /opt/wackowiki/app/wackowiki-6.3.0/src/_cache/config/config.php
⚠️ 注意:直接删除缓存文件后,下一次请求会重新读
config.php与数据库。若只改config.php而不清缓存,页面仍会使用旧值,表现为“文件里明明改了但站点没变化”。
四、参数总览
WackoWiki 6.3.0 的默认参数约 200 个,后台按用途拆成 12 个模块:Basic、Appearance、System、Permissions、Security、Formatter、Upload、Filter、Email、Notifications、Syndication、Pages。下表按“部署与运维最常用”的维度先给总览,详细解释见第五章。
| 分组 | 代表参数 | 默认值/实测值 | 影响面 |
|---|---|---|---|
| 数据库 | db_driver、db_host、db_name、db_user、db_password、db_charset、table_prefix | mysqli、db、wackowiki、wacko、q1w2e3r4、utf8mb4、wacko_ | 连接与建表 |
| 站点 | site_name、site_desc、root_page、base_url、admin_name | WackoWiki Demo、Cover what you do best...、HomePage、http://localhost:8140/、Root | 页面标题、首页、链接生成 |
| URL 与重写 | rewrite_mode、canonical、tls、cookie_prefix、reverse_proxy | 1、0、0、空、0 | 短 URI、HTTPS、反代 |
| 会话与缓存 | session_store、session_length、cache、cache_ttl、cache_sql | 1、30、1、600、0 | 登录状态、页面性能 |
| 权限 | default_read_acl、default_write_acl、default_comment_acl、default_create_acl、default_upload_acl、acl_lock | *、$、$、$、Admins、0 | 新页面默认权限 |
| 编辑与修订 | max_page_size、section_edit、review、hide_revisions、default_diff_mode | 2097152、1、0、0、3 | 页面大小、段落编辑、审核、差异视图 |
| 上传 | upload、upload_images_only、upload_max_size、upload_quota、upload_quota_per_user | admins、1、512000、0、104857600 | 谁能传、传什么、传多大 |
| 安全 | enable_security_headers、csp、referrer_policy、form_token_time、max_login_attempts、pwd_admin_min_chars | 1、1、7、7200、3、15 | 响应头、CSRF、登录限制 |
| 订阅与 SEO | enable_feeds、xml_changes_link、opensearch、xml_sitemap、noindex | 1、1、0、0、0 | RSS/XML、站点地图 |
| 邮件 | enable_email、enable_email_notification、phpmailer_method、smtp_host、smtp_port | 1、1、mail、localhost、587 | 通知与找回 |
| 语言与主题 | language、multilanguage、theme、allow_themes、timezone | en、0、default、0、UTC | 界面语言、皮肤、时区 |
| 日志与维护 | debug、log_level、log_default_show、enable_referrers、keep_deleted_time | 0、0、1、0、0 | 调试、日志、回收站 |
五、核心参数分类详解
5.1 数据库与表前缀
| 参数 | 默认值 | 实测值 | 说明 |
|---|---|---|---|
db_driver | 空 | mysqli | 可选 mysqli、mysql_pdo、sqlite、sqlite_pdo;安装器推荐 MySQLi |
db_host | localhost | db | 数据库主机;Compose 中填服务名,不能填 localhost |
db_port | 空(默认端口) | 3306 | 非默认端口时必须显式填写 |
db_name | wacko | wackowiki | 数据库名,必须已存在 |
db_user | 空 | wacko | 应用连接用户 |
db_password | 空 | q1w2e3r4 | 应用连接口令;生产用强口令并通过环境变量注入 |
db_charset | utf8mb4 | utf8mb4 | 完整 UTF-8;不要改成 utf8,否则 emoji 与部分中文扩展字符会丢 |
db_collation | utf8mb4_unicode_520_ci | utf8mb4_unicode_520_ci | 排序规则;与字符集匹配 |
db_engine | InnoDB | InnoDB | 表引擎;InnoDB 支持事务与崩溃恢复 |
db_vendor | mysql | mariadb | 数据库厂商标识,影响少量兼容分支 |
table_prefix | wacko_ | wacko_ | 同库多实例隔离;已有数据不可随意改 |
sql_mode | 0 | 0 | 0=Server、1=Session、2=Lax、3=Strict;严格模式更安全但可能暴露旧代码兼容问题 |
💡 说明:
db_*与table_prefix属于“连接级参数”,后台管理面板不提供修改入口,必须改config/config.php。改table_prefix等于换一套表,已有数据不会自动迁移。
5.2 站点标识与 URL
| 参数 | 默认值 | 实测值 | 说明 |
|---|---|---|---|
site_name | MyWikiSite | WackoWiki Demo | 浏览器标题、页头、订阅标题、邮件主题的基础名 |
site_desc | Cover what you do best. Link to the rest. | 同默认 | 站点简介,影响页头与 SEO 描述 |
root_page | HomePage | HomePage | 首页页面名;必须存在,否则首页 404 |
base_url | 按请求自动推导 | http://localhost:8140/ | 站点根 URL;反向代理/HTTPS 必须改成外部地址 |
canonical | 0 | 0 | 是否输出 canonical 链接;多域名站点时按需开启 |
rewrite_mode | 按 mod_rewrite 探测 | 1 | 1=短 URI,0=查询串;关闭后链接形如 /index.php?page=... |
tls | 0 | 0 | 是否强制 TLS;生产启用 HTTPS 后设为 1 |
tls_implicit | 0 | 0 | 隐式 TLS(如 SMTPS)场景使用 |
cookie_prefix | 空 | 空 | 多实例同域部署时用于隔离 Cookie |
reverse_proxy | 0 | 0 | 是否信任反向代理头;开启后必须配合 reverse_proxy_addresses |
reverse_proxy_header | 空 | 空 | 反代传递的客户端 IP 头名 |
admin_name | 空 | Root | 站点负责人显示名;不参与权限判定 |
⚠️ 注意:
base_url写错是“页面能开但 CSS/上传/订阅全坏”的常见原因。它决定静态资源、附件与 feed 链接的绝对地址;迁移域名后必须同步修改并清缓存。
5.3 会话、缓存与性能
| 参数 | 默认值 | 实测值 | 说明 |
|---|---|---|---|
session_store | 1 | 1 | 1=文件、2=数据库;SQLite 只支持文件 |
session_length | 30 | 30 | Cookie/会话有效期(天);后台显示 Time left: 30 minute(s) 是后台会话计时 |
allow_persistent_cookie | 1 | 1 | 是否允许“记住我”持久 Cookie |
cache | 0 | 1 | 页面缓存总开关;实测数据库覆盖为 1 |
cache_ttl | 600 | 600 | 页面缓存有效期(秒) |
cache_sql | 0 | 0 | SQL 查询缓存;读多写少时可开 |
cache_sql_ttl | 600 | 600 | SQL 缓存有效期(秒) |
session_notice | 0 | 0 | 会话终止提示 |
login_notice | 0 | 0 | 登录欢迎提示 |
💡 说明:WackoWiki 的缓存分配置、页面、查询、订阅、模板、缩略图多层。后台
Purge cache可以分别勾选清理;生产环境建议至少开启cache与cache_ttl=600,并在主题/配置变更后清缓存。
5.4 权限与 ACL
| 参数 | 默认值 | 实测值 | 说明 |
|---|---|---|---|
default_read_acl | * | * | 新页面默认可读:* 所有人、$ 注册用户、组名/用户名、! 前缀表示拒绝 |
default_write_acl | $ | $ | 新页面默认可写 |
default_comment_acl | $ | $ | 新页面默认可评论 |
default_create_acl | $ | $ | 新页面默认可创建子页面 |
default_upload_acl | Admins | Admins | 新页面默认可上传附件 |
rename_global_acl | Admins | Admins | 全局重命名权限 |
acl_lock | 0 | 0 | 是否锁定 ACL,禁止页面所有者修改 |
hide_locked | 1 | 1 | 对无权限用户隐藏锁定页面入口 |
remove_onlyadmins | 0 | 0 | 是否仅管理员可删除页面 |
owners_can_remove_comments | 1 | 1 | 页面所有者可删除评论 |
categories_handler | 1 | 1 | 分类处理器开关/模式 |
moders_can_edit | 3 | 3 | 版主可编辑范围/级别 |
ACL 语法实测要点:
- 多个用户/组用换行分隔,不是逗号:
Admins
Moderator
*表示所有人,$表示仅注册用户;前置!表示拒绝。- 保存成功回显:
Access control lists updated
- 把
read_acl改为Admins后,匿名访问页面实测返回:
You aren't allowed to read this page.
⚠️ 注意:ACL 同时影响页面、修订、附件与订阅输出。只改
read_acl而不检查附件/订阅,可能出现“正文看不到但 feed 仍泄露标题”的错觉;实际上 feed 也会走权限判定,测试时应一并验证。
5.5 页面编辑、修订与显示
| 参数 | 默认值 | 实测值 | 说明 |
|---|---|---|---|
max_page_size | 2097152(2MB) | 2097152 | 单页最大字节数;大页面应拆分 |
edit_summary | 0 | 0 | 是否强制填写编辑摘要 |
minor_edit | 0 | 0 | 是否允许标记小修改 |
section_edit | 1 | 1 | 段落级编辑;提高长页面编辑效率 |
review | 0 | 0 | 是否需要审核后发布 |
enable_comments | 1 | 1 | 页面评论开关 |
hide_revisions | 0 | 0 | 是否对普通用户隐藏修订历史 |
show_permalink | 0 | 0 | 是否显示永久链接 |
diff_modes | 0,1,2,3,4,5 | 同默认 | 可用差异视图模式 |
default_diff_mode | 3 | 3 | 默认差异视图 |
hide_toc | 0 | 0 | 隐藏目录 |
hide_index | 0 | 0 | 隐藏索引 |
tree_level | 1 | 1 | 树形层级显示 |
attachments_handler | 2 | 2 | 附件处理器模式 |
source_handler | 1 | 1 | 源码查看处理器开关 |
export_handler | 2 | 2 | 导出处理器模式 |
💡 说明:
default_diff_mode=3对应“并排(side by side)”差异视图;diff_modes控制下拉框可选模式。修订页实测显示:
3 11/02/2026 10:05 — (344.0 B) +69 by Root
2 11/02/2026 10:03 — (275.0 B) +81 by Root
1 11/02/2026 10:02 — (194.0 B) +194 by Root
5.6 上传与媒体
| 参数 | 默认值 | 实测值 | 说明 |
|---|---|---|---|
upload | admins | admins | 0 关闭、admins 管理员、moderator 版主、reviewer 审核员、1 注册用户 |
upload_images_only | 1 | 1 | 仅允许图片;需要文档附件时改为 0 |
upload_max_size | 512000(500 KiB) | 512000 | 单文件上限;后台以 KiB 显示 |
upload_quota | 0 | 0 | 全站总配额;0 表示不限制 |
upload_quota_per_user | 104857600(100 MiB) | 104857600 | 每用户配额 |
upload_translit | 1 | 1 | 文件名转写 |
upload_translit_lower | 0 | 0 | 转写是否转小写 |
upload_allowed_exts | 空 | 空 | 白名单;空表示不启用白名单 |
upload_banned_exts | 长列表 | 同默认 | 禁止扩展名:php、phtml、exe、jsp、html、js 等 |
check_mimetype | 1 | 1 | 校验 MIME 与扩展名一致性 |
mime_type_exclusions | HTML/JS/PHP 等 | 同默认 | 拒绝危险 MIME |
svg_sanitizer | 1 | 1 | SVG 清洗;上传 SVG 时必须开启 |
create_thumbnail | 0 | 0 | 自动生成缩略图 |
max_thumb_width | 150 | 150 | 缩略图最大宽度 |
max_image_area | 0 | 0 | 图片面积限制;0 表示自动/不限制 |
max_image_width | 0 | 0 | 图片宽度限制 |
jpeg_quality | 80 | 80 | JPEG 质量 |
⚠️ 注意:
upload_max_size只是 WackoWiki 层限制,PHP 的upload_max_filesize与post_max_size必须不小于它,否则表单会在 PHP 层被截断。实测上传 45 字节文本附件返回File upload successful,附件详情Mimetype: text/plain、Size: 45.0 B。
5.7 安全、登录与表单令牌
| 参数 | 默认值 | 实测值 | 说明 |
|---|---|---|---|
enable_security_headers | 1 | 1 | 输出 CSP、Permissions-Policy、Referrer-Policy、X-Frame-Options、X-Content-Type-Options |
csp | 1 | 1 | Content-Security-Policy 开关;实测响应头为 default-src 'self'... |
permissions_policy | 1 | 1 | 实测为 camera=(),microphone=(),midi=(),geolocation=(),browsing-topics=() |
referrer_policy | 7 | 7 | 实测响应头 strict-origin-when-cross-origin |
form_token_time | 7200 | 7200 | 表单令牌有效期(秒);过长会扩大 CSRF 窗口 |
max_login_attempts | 3 | 3 | 前台登录失败上限 |
ap_max_login_attempts | 4 | 4 | 后台恢复口令失败上限;超过后锁定 |
ap_failed_login_count | 0 | 0 | 后台失败计数 |
pwd_min_chars | 10 | 10 | 普通用户口令最小长度 |
pwd_admin_min_chars | 15 | 15 | 管理员口令最小长度;与向导页 minlength=15 对应 |
pwd_unlike_login | 1 | 1 | 口令不得与登录名相同 |
pwd_char_classes | 0 | 0 | 是否要求多字符类别 |
allow_registration | 0 | 0 | 自助注册开关;内网建议关闭 |
approve_new_user | 0 | 0 | 新用户是否需要审批 |
enable_captcha | 1 | 1 | 验证码总开关 |
captcha_new_page | 1 | 1 | 新建页面验证码 |
captcha_edit_page | 1 | 1 | 编辑页面验证码 |
anonymize_ip | 0 | 0 | 是否匿名化 IP;GDPR 场景可开 |
noindex | 0 | 0 | 是否禁止搜索引擎索引 |
enable_system_message | 1 | 1 | 全站系统消息开关 |
⚠️ 注意:后台恢复口令不是普通用户口令,它由
config.php的recovery_password哈希控制,与pwd_admin_min_chars不是同一条校验链路。后台连续失败达到ap_max_login_attempts会锁定,需要清理config/lock_ap或数据库计数后恢复。
5.8 订阅、SEO 与站点地图
| 参数 | 默认值 | 实测值 | 说明 |
|---|---|---|---|
enable_feeds | 1 | 1 | RSS/XML 订阅总开关 |
xml_changes_link | 1 | 1 | 变更订阅链接指向:1=差异视图、2=修订页、3=修订列表、4=当前页 |
opensearch | 0 | 0 | OpenSearch 描述文件 |
xml_sitemap | 0 | 0 | XML 站点地图 |
xml_sitemap_gz | 0 | 0 | 站点地图 gzip |
xml_sitemap_time | 1 | 1 | 站点地图时间粒度 |
enable_referrers | 0 | 0 | 是否记录来源页 |
referrers_purge_time | 1 | 1 | 来源记录保留天数 |
实测订阅输出:
curl -sS -o /dev/null -w '%{http_code} %{content_type} %{size_download}\n' \
http://localhost:8140/xml/changes_wackowikidemo.xml
200 application/xml 970
💡 说明:站点级订阅文件名由站点名生成(
WackoWiki Demo→changes_wackowikidemo.xml)。改名后旧文件不会自动删除,需要手工清理xml/并重新保存页面触发重建。
5.9 邮件与通知
| 参数 | 默认值 | 实测值 | 说明 |
|---|---|---|---|
enable_email | 1 | 1 | 邮件总开关 |
enable_email_notification | 1 | 1 | 通知邮件开关 |
phpmailer_method | mail | mail | mail 走本机 MTA;smtp 走 SMTP |
smtp_host | localhost | localhost | SMTP 主机 |
smtp_port | 587 | 587 | SMTP 端口;465 需配 smtp_connection_mode=ssl |
smtp_username | 空 | 空 | SMTP 用户 |
smtp_password | 空 | 空 | SMTP 口令 |
smtp_auto_tls | 0 | 0 | 自动 STARTTLS |
email_from | WackoWiki | WackoWiki | 发件人显示名 |
email_subject_prefix | 空 | 空 | 主题前缀;空时用 site_name |
notify_minor_edit | 1 | 1 | 小修改是否通知 |
notify_page | 2 | 2 | 页面变更通知级别 |
notify_comment | 1 | 1 | 评论通知 |
notify_new_user_account | 1 | 1 | 新用户通知 |
notify_upload | 1 | 1 | 上传通知 |
allow_massemail | 0 | 0 | 群发邮件 |
allow_intercom | 0 | 0 | 站内信 |
⚠️ 注意:
smtp并显式配置主机、端口、账号与 TLS。
5.10 语言、主题与时区
| 参数 | 默认值 | 实测值 | 说明 |
|---|---|---|---|
language | en | en | 默认界面语言;安装器可选 30 多种 |
multilanguage | 0 | 0 | 多语言模式;启用后页面可设置 page_lang |
allowed_languages | 0 | 0 | 允许的语言集合;0 表示全部 |
theme | default | default | 默认主题 |
allow_themes | 0 | 0 | 是否允许用户切换主题 |
allow_themes_per_page | 0 | 0 | 是否允许按页设置主题 |
theme_color | 空 | 空 | 主题主色 |
site_logo | wacko_logo.png | 同默认 | 站点 Logo |
logo_display | 0 | 0 | 是否显示 Logo |
logo_height | 50 | 50 | Logo 高度 |
logo_width | 108 | 108 | Logo 宽度 |
date_format | dd.MM.y | 同默认 | 日期格式 |
time_format | HH:mm | 同默认 | 时间格式 |
timezone | UTC | UTC | 时区;中文站点可改 Asia/Shanghai |
american_date | 1 | 1 | 美式日期显示 |
💡 说明:
timezone只影响显示,不改变数据库存储的 UTC 时间。改成Asia/Shanghai后,页面时间会 +8 小时,但订阅pubDate仍按服务器/UTC 输出,跨时区阅读时要区分。
5.11 日志、调试与维护
| 参数 | 默认值 | 实测值 | 说明 |
|---|---|---|---|
debug | 0 | 0 | 调试模式;生产保持 0 |
debug_admin_only | 0 | 0 | 仅管理员可见调试信息 |
debug_sql_threshold | 0 | 0 | 慢 SQL 阈值(秒);0 不记录 |
log_level | 0 | 0 | 日志级别;0 关闭,往上记录更多事件 |
log_default_show | 1 | 1 | 后台默认显示日志 |
log_purge_time | 0 | 0 | 日志保留天数;0 不自动清理 |
keep_deleted_time | 0 | 0 | 删除页面保留天数 |
pages_purge_time | 0 | 0 | 页面回收站清理周期 |
enable_counters | 1 | 1 | 访问计数 |
ext_bad_behaviour | 0 | 0 | Bad Behaviour 扩展 |
⚠️ 注意:
debug=1会把路径、SQL、配置细节输出到页面,生产必须关闭;排查完立即改回 0 并清缓存。
5.12 密钥、恢复口令与版本
| 参数 | 默认值 | 实测值 | 说明 |
|---|---|---|---|
system_seed | 安装器随机生成 | u^U84ey~0%#}G98zo298 | 系统种子;用于恢复口令哈希等,长度必须 ≥20 |
hashid_seed | 安装器随机生成 | rr!xY51C&yp(4*_66&2] | Hash ID 种子;用于隐藏数字 ID |
recovery_password | 空 | $2y$10$... | 后台恢复口令的哈希,绝不是明文 |
wacko_version | 安装器写入 | 6.3.0 | 版本标识;不要手工改,升级由安装器维护 |
trusted_domains | 空 | 空 | 预留/未使用 |
恢复口令的生成公式:
password_hash(
base64_encode(hash('sha256', sha1(system_seed) . ap_password, true)),
PASSWORD_DEFAULT
)
实测生成脚本与输出:
<?php
$seed = 'u^U84ey~0%#}G98zo298';
echo password_hash(base64_encode(hash('sha256', hash('sha1', $seed) . 'q1w2e3r4', true)), PASSWORD_DEFAULT), "\n";
$2y$10$oit5QUJ842YFxNPqH3MOoO7CF.BipVA3bOSRtDsF6cE11yhfT8h.q
⚠️ 注意:
system_seed一旦更换,所有基于它的哈希(包括恢复口令)都会失效。更换system_seed后必须重新生成recovery_password,否则后台永远登录不进去。
六、生产配置模板
以下模板以“内网知识库、50–200 用户、MariaDB、HTTPS 反代”为场景。config.php 只保留安装器生成、且不建议后台覆盖的连接与密钥项;其余偏好建议通过后台写入数据库。
<?php
// config/config.php(生产模板,密钥项按实际替换)
$wacko_config = [
// 站点与 URL
'base_url' => 'https://wiki.example.com/',
'rewrite_mode' => 1,
'tls' => 1,
'canonical' => 1,
// 数据库
'db_driver' => 'mysqli',
'db_host' => 'db',
'db_port' => '3306',
'db_name' => 'wackowiki',
'db_user' => 'wacko',
'db_password' => '${WACKO_DB_PASSWORD}',
'db_charset' => 'utf8mb4',
'db_collation' => 'utf8mb4_unicode_520_ci',
'db_engine' => 'InnoDB',
'db_vendor' => 'mariadb',
'table_prefix' => 'wacko_',
// 密钥:保留安装器生成值,不要手工缩短
'system_seed' => '<安装器生成的 20+ 位随机串>',
'hashid_seed' => '<安装器生成的随机串>',
'recovery_password' => '<按 5.12 公式生成的哈希>',
'wacko_version' => '6.3.0',
];
后台建议值(写入数据库 wacko_config):
| 参数 | 建议值 | 理由 |
|---|---|---|
cache | 1 | 降低数据库压力 |
cache_ttl | 600 | 10 分钟延迟可接受 |
cache_sql | 1 | 读多写少的内部站点 |
default_read_acl | $ | 内网默认仅注册用户可读 |
default_write_acl | Admins 或 $ | 按协作范围收紧 |
default_upload_acl | Admins | 先收紧,再按需放开 |
upload | admins | 防止任意用户上传 |
upload_images_only | 1 | 降低可执行文件风险 |
upload_max_size | 2048000(2 MiB) | 与 PHP 限制对齐 |
allow_registration | 0 | 内网不开放自助注册 |
pwd_admin_min_chars | 15 | 与向导一致 |
max_login_attempts | 3 | 防暴力破解 |
ap_max_login_attempts | 4 | 后台恢复口令保护 |
enable_feeds | 0 | 不需要外部订阅时关闭,减少信息暴露 |
xml_sitemap | 0 | 内网不需要搜索引擎 |
noindex | 1 | 禁止搜索引擎索引 |
timezone | Asia/Shanghai | 中文团队显示习惯 |
language | zh | 中文界面 |
debug | 0 | 生产关闭 |
⚠️ 注意:模板中的
${WACKO_DB_PASSWORD}是占位符,WackoWiki 不会自动读取环境变量;实际部署时应由部署脚本生成config.php时替换,或在受控文件中写真实值并限制权限为640。不要把真实生产口令写进公开仓库。
七、常见问题
7.1 改了 config.php 但页面没变化
原因:_cache/config/config.php 缓存仍存在,或数据库 wacko_config 表覆盖了 config.php 的值。
处理:先查数据库是否有同名键:
docker compose exec -T db mariadb -uroot -pq1w2e3r4 -N -e \
"SELECT config_name, config_value FROM wackowiki.wacko_config WHERE config_name='upload';"
如果有值,以数据库为准;要么在后台改,要么删除该行。然后清配置缓存:
rm -f /opt/wackowiki/app/wackowiki-6.3.0/src/_cache/config/config.php
7.2 后台 Preferences 保存后报错或无变化
原因:后台表单提交带 _nonce 与 _action,会话过期或令牌失效时会被拒绝;另外部分参数有范围校验。
处理:重新登录前台与后台,刷新页面后重新提交;保存后看页面顶部 msg 提示。仍无变化时按 7.1 检查缓存与数据库。
7.3 修改 timezone 后时间仍不对
timezone 只控制显示。数据库中的 created/modified 以 UTC 存储,订阅 pubDate 也按 UTC 输出。若希望全站统一到本地时间,除了改 timezone,还要确认 PHP 的 date.timezone 与数据库会话时区;三者不一致时会出现“页面时间对、日志时间不对”。
7.4 上传权限改了但仍不能上传
上传受三层限制:
- 全局
upload(谁能上传); - 页面 ACL 的
upload_acl(这个页面谁能上传); upload_images_only、upload_max_size、upload_banned_exts、check_mimetype(传什么、多大)。
按“全局 → 页面 → 文件类型/大小”的顺序排查。实测把 upload 保持 admins、upload_acl=Admins 时,管理员上传 45 字节文本成功;普通注册用户会被拒绝。
7.5 恢复口令忘了怎么办
按 5.12 的公式,用 system_seed 与目标口令重新生成哈希,写入 config.php 的 recovery_password,删除配置缓存,再登录后台。不要直接把 recovery_password 改成明文,password_verify() 不会通过。
7.6 站点地图/订阅文件不生成
检查 enable_feeds、xml_sitemap 是否为 1,xml/ 目录是否对 Web 进程可写。实测 xml/ 不可写时,/xml/changes_<站点名>.xml 返回 404 与 SVG 错误图;修正权限并保存页面后恢复。
八、参考链接
- WackoWiki 官方配置说明:https://wackowiki.org/doc/Doc/English/Configuration
- WackoWiki 官方安装说明:https://wackowiki.org/doc/Doc/English/Installation
- WackoWiki 官方用户手册:https://wackowiki.org/doc/Doc/English
- WackoWiki 6.3.0 Release:https://github.com/WackoWiki/wackowiki/releases/tag/6.3.0
- WackoWiki GitHub 仓库:https://github.com/WackoWiki/wackowiki
- MariaDB 官方文档:https://mariadb.org/documentation/