WackoWiki 介绍与选型指南
介绍 WackoWiki 6.3.0 的定位、架构、功能、适用场景与限制,并与 DokuWiki、Wiki.js、MediaWiki、Tiki、PmWiki 做选型对比,事实来自官方站点与 GitHub 实查(查询日期 2026-11-02)。
WackoWiki 介绍与选型指南
目标:回答“WackoWiki 是什么、它靠什么工作、哪些团队适合用”三个问题。本文为认知与选型篇,事实来自 WackoWiki 官方网站、GitHub 仓库元数据、官方发行说明与同类产品公开页面,查询日期统一为 2026-11-02;本文不含本地部署实测,部署细节与参数实测分别见《WackoWiki 6.3.0 Docker Compose 部署指南》和《WackoWiki 6.3.0 配置参数详解》。
一、环境信息
- 软件名称:WackoWiki(轻量、易安装的多语言 Wiki 引擎)
- 当前稳定版本:6.3.0,官方发布日期 2026-07-18
- 版本节奏:6.2.1(2026-03-03)、6.1.29(2025-09-03),大致按季度发布维护版本;6.3.0 是当前主版本
- 开源许可:BSD-3-Clause(GitHub 仓库 LICENSE 标识为
BSD 3-Clause "New" or "Revised" License) - 官方站点:https://wackowiki.org/
- 源码仓库:https://github.com/WackoWiki/wackowiki
- 发行包:
wackowiki-6.3.0.zip,GitHub Releases 资源大小 5,296,159 字节 - 技术栈:PHP 8.3–8.5 + Apache/Nginx + MariaDB/MySQL/SQLite
- 官方定位:轻量、易安装、完全多语言的 Wiki 引擎,强调易记的 Wiki 标记、逐页 ACL、修订对比、WYTIWYG 编辑、主题、上传与多级缓存
- 社区规模(GitHub 实查):55 stars、10 forks、0 open issues,最近一次代码推送 2026-10-21
- 仓库创建时间:2020-01-19;默认分支
master;仓库 topics 为php、mariadb、mysql、sqlite、wiki、wiki-engine
💡 版本说明:WackoWiki 的版本号采用“主版本.次版本.修订号”三段式,6.3.0 对运行环境的要求是 PHP 8.3 及以上、8.5 及以下;低于 8.3 的 PHP 版本不在官方支持范围内。上线前应以官方 Releases 与 Requirements 页面再次复核,本文日期为 2026-11-02。
二、软件概述
WackoWiki 是一个把“够用的 Wiki 能力”做进单一 PHP 应用的开源项目。它的目标不是像 MediaWiki 那样承载维基百科级别的条目协作,也不是像 Tiki 那样把 Wiki、表单、论坛、日历全部塞进一个内核,而是用较小的代码量和较低的部署门槛,提供一套完整的页面协作闭环:页面创建、标记编辑、修订历史、差异对比、逐页权限、附件上传、评论、订阅与搜索。
从代码与许可证信息可以看出它的技术血缘:项目 LICENSE 中保留了 WakkaWiki Copyright (c) 2002, Hendrik Mans,说明 WackoWiki 是在 WakkaWiki 基础上持续演进的分支。它保留了 WakkaWiki 的轻量基因,同时把 PHP 版本、数据库抽象层、安全头、模板引擎、URI 路由和现代前端编辑器补齐到 PHP 8.3 时代可用的水平。
这一定位带来三个直接结果:
- 部署轻:官方发行包是一份可直接解压的 PHP 应用,不依赖 Composer 在线装包,也不要求独立的搜索服务或消息队列;一个 PHP 运行环境加一个数据库即可完成最小可用部署。
- 权限细:权限不是“整站登录/不登录”的粗粒度开关,而是按页面维护
read、write、comment、create、upload五类 ACL,适合内网部门文档、客户交付手册、项目门户等需要“同一站点内分层可见”的场景。 - 功能边界清楚:它提供 Wiki 所需的页面、版本、附件、评论、订阅与搜索,但不提供结构化的表单引擎、工作流引擎或实时协同编辑;需要这些能力时应选 Tiki、Wiki.js 或专业系统,而不是在 WackoWiki 上强行扩展。
三、核心架构
WackoWiki 是典型的“PHP 前端控制器 + 处理器 + 数据库抽象层”架构,源码目录可以直接反映职责划分:
| 层次 | 主要文件/目录 | 作用 |
|---|---|---|
| 入口层 | index.php | 所有页面请求的统一入口,完成常量、配置、会话与路由初始化 |
| 路由层 | config/router.conf、class/urirouter.php | 用正则规则把 URI 分派到处理器,并提取页面名、动作名与参数 |
| 应用层 | class/wacko.php、class/init.php、class/final.php | 引擎对象、请求上下文、页面对象、权限判定与输出收尾 |
| 处理器层 | handler/page/、action/ | show、edit、revisions、diff、permissions、upload 等页面动作;action/ 放评论、分类、导出等扩展动作 |
| 格式化层 | formatter/、action/ 中的 action 与 highlighter | 解析 Wacko 标记、嵌入 action({{...}})、高亮代码与安全 HTML |
| 数据层 | class/dbal.php、class/dbmysqli.php、class/dbpdo.php、class/dbsqlite.php | 统一的数据库访问接口,支持 MySQLi、PDO MySQL、SQLite |
| 配置层 | config/config.php、config/config_defaults.php、class/settings.php | 安装器写入的站点配置、内置默认值、数据库 config 表覆盖值与配置缓存 |
| 会话与安全 | class/session.php、class/http.php、config/csp.conf | 会话存储、Cookie、CSRF 令牌、CSP/Permissions-Policy/Referrer-Policy 等安全头 |
| 主题与语言 | theme/、lang/ | 主题模板、样式与多语言资源 |
几个对选型影响最大的架构特征:
- 单入口 + 路由表:所有请求从
index.php进入,由router.conf按顺序匹配规则。新增页面动作通常只需增加处理器与路由规则,不需要改 Web 服务器配置;这也意味着mod_rewrite或 Nginx 的try_files必须正确配置,否则会出现除首页外全部 404 的情况。 - 数据库抽象层可替换:同一套代码可在 MySQLi、PDO MySQL 与 SQLite 之间切换。SQLite 适合单机小站与演示,MariaDB/MySQL 适合多人协作与需要备份/主从的生产环境。
- 配置三层叠加:内置默认值(
config_defaults.php)→ 安装器写入的config.php→ 数据库config表中的后台设置,后两者覆盖前者;最终还会序列化到_cache/config/config.php作为运行时缓存。理解这一点是排查“后台改了参数为什么不生效”的关键。 - 缓存分层:官方列出配置缓存、页面缓存、查询缓存、订阅缓存、模板缓存与缩略图缓存。缓存默认关闭或按需开启,开启后能显著降低数据库压力,但修改主题/配置后需要清理对应缓存。
- 权限在页面层判定:ACL 存储在
wacko_acl表,按页面与五类动作分别匹配用户、用户组、*(所有人)与$(注册用户)。它不是 Web 服务器层的 IP 白名单,页面渲染、附件下载、修订查看与订阅输出都要经过同一套判定。
💡 技术拓展:WackoWiki 的“action”与“highlighter”是两套不同的扩展机制。action 以
{{action ...}}形式在页面中执行动态逻辑(如{{toc}}、{{changes}}),highlighter 负责把代码块按语言着色。二者都运行在服务端,但 action 的能力更接近“页面内嵌小组件”,不要把不可信用户提交的 action 当作安全的沙箱。
四、功能特性
官方 Features 页面列出的能力可以归纳为以下六组:
| 能力域 | 具体功能 | 对选型的意义 |
|---|---|---|
| 内容创作 | 易记的 Wiki 标记、WYTIWYG 编辑、段落级编辑、自动目录、拼写/特殊字符即时修正 | 非技术用户也能在浏览器内完成页面维护,不需要 Markdown 客户端 |
| 版本与审计 | 完整修订控制、强大的修订差异对比、修订订阅 | 适合需要“谁在什么时候改了什么”的内网文档与交付手册 |
| 权限 | 逐页访问控制列表(ACL),可授予用户、用户组、所有人或注册用户 | 同站多部门/多客户分层可见,避免为每类读者单独建站 |
| 协作 | 页面评论、页面关注、变更与评论邮件通知 | 把 Wiki 当作轻量协作工具,而不是只读文档库 |
| 媒体 | 页面级或全局附件上传、缩略图生成、图片尺寸限制 | 产品手册、项目资料可以图文并茂,不必外挂图床 |
| 平台能力 | 多语言、完整 UTF-8、主题/皮肤、多级缓存、URI 路由、模板引擎、会话处理、集群与相对地址 | 可做中文站、多语言站与有主题定制需求的站点 |
补充说明:
- WYTIWYG 不是“所见即所得”的笔误,而是项目对编辑器交互的命名;实际编辑仍以 Wiki 标记为主,编辑器提供工具栏、实时预览、全屏与 Zen 模式等辅助。
- 多语言既包括界面语言,也包括页面语言(
page_lang)与多语言模式;官方安装器提供 30 多种界面语言,中文包含简体与繁体。 - 订阅方面,站点级变更与单页修订都可输出 RSS/XML;这部分是 WackoWiki 对外最接近“机器接口”的能力,详见《WackoWiki 6.3.0 API 使用详解》。
- 上传安全默认只允许管理员上传、默认仅图片、默认检查 MIME 类型并禁用一批可执行扩展名;生产环境应按业务需要收紧,而不是直接放开。
五、快速开始(官方最小路径)
WackoWiki 的官方最小可用路径只有五步,适合先判断“这套东西是否值得继续投入”:
- 准备运行环境:PHP 8.3–8.5,启用
mysqli(或pdo_mysql)、bcmath、ctype、fileinfo、gd、iconv、intl、json、mbstring、openssl、pcre、spl、zlib等扩展;准备 MariaDB/MySQL 或 SQLite。 - 放置源码:从官方 Releases 下载
wackowiki-6.3.0.zip,解压后把src/目录作为 Web 根目录,或把解压目录映射到 Web 根目录。 - 准备可写目录:确保
_cache/、file/、xml/、config/等目录对 Web 进程用户可写;安装器会在 System Requirements 页逐项检查。 - 走安装向导:浏览器访问站点根路径,按“授权 → 语言 → 系统要求 → 站点配置 → 数据库配置 → 安装数据库 → 写配置文件”的顺序完成初始化。
- 完成收尾:删除或移走
setup/,收紧config/config.php权限,使用管理员账号登录,按需在后台开启缓存、订阅、上传与安全策略。
对多数团队而言,真正的决策点不在“能不能装”,而在“逐页 ACL 是否够用、中文内容维护是否顺手、是否需要结构化表单/实时协同”。如果这三项的答案分别是“够用、顺手、不需要”,WackoWiki 的轻量优势就能成立;否则应直接看下一节的对比表。
六、适用场景与限制
适合 WackoWiki 的场景:
- 10–500 人规模团队的内网知识库:需要页面级权限、修订记录与附件,但不想维护一套重型 CMS。
- 产品手册/交付文档:同一站点内按客户或项目分页面授权,读者只看与自己相关的内容。
- 多语言站点:界面语言与页面语言可切换,中文、英文页面可在同一安装内维护。
- 轻量项目门户:用页面、评论、订阅和附件就能覆盖需求,不需要表单引擎与工作流。
- 资源受限的单机部署:SQLite 或单实例 MariaDB 即可起步,后续再按访问量升级。
不适合或需谨慎的场景:
- 海量文档与高并发检索:WackoWiki 的搜索与缓存不是为百万级条目、搜索集群设计的;规模上来后需要外接检索或做读写分离。
- 强实时协同编辑:它提供修订与差异,但不是 Google Docs 式的 OT/CRDT 实时协同。
- 结构化业务表单/审批流:Tracker、工作流不是 WackoWiki 的内置能力,应选 Tiki 或专业 BPM/表单系统。
- 需要成熟 REST/GraphQL API 的应用集成:WackoWiki 对外以 RSS/XML、页面 HTML 与后台表单为主,没有现代 JSON API;需要 API 优先时 Wiki.js 更合适。
- 没有 PHP 运维经验且不愿维护扩展:虽然安装简单,但 PHP 扩展、目录权限、
mod_rewrite、配置缓存与安全头仍需要基本运维能力。
七、同类选型对比
💡 说明:下表聚焦“自托管 Wiki/知识协作”赛道。星标与最近推送时间为 GitHub API 实查值,查询日期 2026-11-02;版本号与技术栈以各产品官方页面/仓库为准。不同产品的“星标”不能直接等同于质量或市场份额。
| 产品 | 当前版本(查询日) | 许可 | 运行栈 | 数据存储 | 公开星标/最近活动 | 核心优势 | 主要代价 |
|---|---|---|---|---|---|---|---|
| WackoWiki | 6.3.0(2026-07-18) | BSD-3-Clause | PHP 8.3–8.5 + Apache/Nginx | MariaDB/MySQL/SQLite | 55 星 / 10 fork;推送 2026-10-21 | 轻量、逐页 ACL、修订对比、多语言、安装简单 | 社区小、中文资料少、无现代 JSON API |
| DokuWiki | 2026-07-14c “Mort” | GPL-2.0 | PHP + Web 服务器 | 平面文件(无数据库) | 4,734 星 / 923 fork;推送 2026-09-29 | 零数据库、拷贝即用、插件生态成熟 | 大规模检索与复杂权限需额外方案 |
| Wiki.js | 3.0 | AGPL-3.0 | Node.js | PostgreSQL/MySQL/MariaDB/MSSQL/SQLite | 29,120 星 / 3,334 fork;推送 2026-11-02 | 现代界面、Markdown、GraphQL API | 资源占用较高、升级与依赖维护复杂 |
| MediaWiki | 1.45.3(2026-06-24) | GPL-2.0-or-later | PHP + Web 服务器 | MySQL/MariaDB/PostgreSQL/SQLite | 5,219 星 / 1,562 fork;推送 2026-11-02 | 生态成熟、维基百科同源、扩展丰富 | 体量大、运维与学习成本高 |
| Tiki | 30.1 | LGPL | PHP + Web 服务器 | MariaDB/MySQL | GitLab 主仓库 | Wiki+CMS+Groupware 一体化 | 功能密度高、后台复杂、上手慢 |
| PmWiki | 以官网为准 | GPL-2.0 | PHP + Web 服务器 | 平面文件 | 以官网为准 | 极简、易定制、无数据库 | 权限与扩展能力依赖插件 |
量化维度解读:
- 版本节奏:WackoWiki 2026 年已发布 6.2.1 与 6.3.0,属于“小步维护”节奏;DokuWiki 采用日期版本(2026-07-14c);Wiki.js 3.0 是较大跨度升级;MediaWiki 1.45.3 为当前稳定维护线。需要“部署一次、多年少动”的组织,应优先看各产品的 LTS/稳定线承诺,而不是单看版本号大小。
- 社区活跃度:Wiki.js 与 MediaWiki 的星标/分叉数量远高于 WackoWiki;WackoWiki 的 55 星说明它是小社区项目,遇到冷门问题时更依赖读源码与官方文档。选它意味着接受“社区规模小”的维护风险,同时也得到更小的代码面与更低的资源占用。
- 许可风险:WackoWiki、DokuWiki、MediaWiki 为 BSD/GPL 系,Wiki.js 为 AGPL-3.0。若修改后以网络服务方式对外提供,AGPL 的源码开放义务需要单独评估;BSD-3-Clause 对商业再分发更宽松,但要求保留版权声明。
- 数据模型:DokuWiki/PmWiki 是平面文件,备份就是拷贝目录,但复杂查询与大规模权限扩展受限;WackoWiki/MediaWiki/Tiki 用关系数据库,便于做 SQL 报表、备份与迁移,代价是需要维护数据库。
- 运维栈匹配:已有 PHP/LAMP 团队选 WackoWiki、DokuWiki、MediaWiki 的边际成本最低;已有 Node.js 栈的团队选 Wiki.js 更顺;只想“丢一个目录就能跑”的选 DokuWiki 或 PmWiki。
“如果……则……”选型建议:
- 如果需要一个“轻量、逐页 ACL、修订对比、中文可用”的自托管 Wiki → WackoWiki。
- 如果追求“零数据库、拷贝目录即备份、插件最多” → DokuWiki。
- 如果需要“现代界面 + Markdown + GraphQL API” → Wiki.js。
- 如果需要“维基百科式的大规模条目协作与成熟扩展生态” → MediaWiki。
- 如果需要“Wiki + 表单 + 论坛 + 日历一体化” → Tiki。
- 如果只需要“极简平面文件 Wiki、愿意自己写插件” → PmWiki。
八、参考链接
- WackoWiki 官网:https://wackowiki.org/
- WackoWiki 官方功能页(Features):https://wackowiki.org/
- WackoWiki 6.3.0 发行说明(2026-07-18):https://wackowiki.org/doc/News
- WackoWiki GitHub 仓库:https://github.com/WackoWiki/wackowiki
- WackoWiki 6.3.0 Release 资源:https://github.com/WackoWiki/wackowiki/releases/tag/6.3.0
- WackoWiki 官方文档(英文):https://wackowiki.org/doc/Doc/English
- WackoWiki 官方配置说明:https://wackowiki.org/doc/Doc/English/Configuration
- WackoWiki 官方安装说明:https://wackowiki.org/doc/Doc/English/Installation
- DokuWiki 官网:https://www.dokuwiki.org/
- DokuWiki GitHub 仓库:https://github.com/dokuwiki/dokuwiki
- Wiki.js 官网:https://js.wiki/
- Wiki.js GitHub 仓库:https://github.com/requarks/wiki
- MediaWiki 官网:https://www.mediawiki.org/wiki/MediaWiki
- MediaWiki GitHub 仓库:https://github.com/wikimedia/mediawiki
- Tiki 官网:https://tiki.org/
- PmWiki 官网:https://www.pmwiki.org/