WackoWiki 介绍与选型指南

介绍 WackoWiki 6.3.0 的定位、架构、功能、适用场景与限制,并与 DokuWiki、Wiki.js、MediaWiki、Tiki、PmWiki 做选型对比,事实来自官方站点与 GitHub 实查(查询日期 2026-11-02)。

WackoWikiWackoWikiWiki知识库PHPMariaDBMySQL2026/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 时代可用的水平。

这一定位带来三个直接结果:

  1. 部署轻:官方发行包是一份可直接解压的 PHP 应用,不依赖 Composer 在线装包,也不要求独立的搜索服务或消息队列;一个 PHP 运行环境加一个数据库即可完成最小可用部署。
  2. 权限细:权限不是“整站登录/不登录”的粗粒度开关,而是按页面维护 read、write、comment、create、upload 五类 ACL,适合内网部门文档、客户交付手册、项目门户等需要“同一站点内分层可见”的场景。
  3. 功能边界清楚:它提供 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 的官方最小可用路径只有五步,适合先判断“这套东西是否值得继续投入”:

  1. 准备运行环境:PHP 8.3–8.5,启用 mysqli(或 pdo_mysql)、bcmath、ctype、fileinfo、gd、iconv、intl、json、mbstring、openssl、pcre、spl、zlib 等扩展;准备 MariaDB/MySQL 或 SQLite。
  2. 放置源码:从官方 Releases 下载 wackowiki-6.3.0.zip,解压后把 src/ 目录作为 Web 根目录,或把解压目录映射到 Web 根目录。
  3. 准备可写目录:确保 _cache/、file/、xml/、config/ 等目录对 Web 进程用户可写;安装器会在 System Requirements 页逐项检查。
  4. 走安装向导:浏览器访问站点根路径,按“授权 → 语言 → 系统要求 → 站点配置 → 数据库配置 → 安装数据库 → 写配置文件”的顺序完成初始化。
  5. 完成收尾:删除或移走 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;版本号与技术栈以各产品官方页面/仓库为准。不同产品的“星标”不能直接等同于质量或市场份额。

产品当前版本(查询日)许可运行栈数据存储公开星标/最近活动核心优势主要代价
WackoWiki6.3.0(2026-07-18)BSD-3-ClausePHP 8.3–8.5 + Apache/NginxMariaDB/MySQL/SQLite55 星 / 10 fork;推送 2026-10-21轻量、逐页 ACL、修订对比、多语言、安装简单社区小、中文资料少、无现代 JSON API
DokuWiki2026-07-14c “Mort”GPL-2.0PHP + Web 服务器平面文件(无数据库)4,734 星 / 923 fork;推送 2026-09-29零数据库、拷贝即用、插件生态成熟大规模检索与复杂权限需额外方案
Wiki.js3.0AGPL-3.0Node.jsPostgreSQL/MySQL/MariaDB/MSSQL/SQLite29,120 星 / 3,334 fork;推送 2026-11-02现代界面、Markdown、GraphQL API资源占用较高、升级与依赖维护复杂
MediaWiki1.45.3(2026-06-24)GPL-2.0-or-laterPHP + Web 服务器MySQL/MariaDB/PostgreSQL/SQLite5,219 星 / 1,562 fork;推送 2026-11-02生态成熟、维基百科同源、扩展丰富体量大、运维与学习成本高
Tiki30.1LGPLPHP + Web 服务器MariaDB/MySQLGitLab 主仓库Wiki+CMS+Groupware 一体化功能密度高、后台复杂、上手慢
PmWiki以官网为准GPL-2.0PHP + 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 介绍与选型指南 - Quzuo