Tiki 30.1 配置参数详解

Tiki 30.1 配置参数详解:PHP 运行参数、local.php 数据库连接、tiki_preferences 站点偏好三层配置,含实测有效值、CLI 读写与 4GB/8GB/16GB 生产模板。

TikiTikiWikiPHPMariaDB2026/11/02

Tiki 30.1 配置参数详解

目标:讲清 Tiki 30.1 的三层配置(PHP 运行参数、数据库连接、站点偏好)在哪里、怎么改、改了何时生效,并给出 4GB/8GB/16GB 三档生产配置模板。全部参数值与命令回显均来自 Ubuntu 26.04.1 + Docker Compose v5.6.1 环境实测(2026-11-02)。部署过程见本专栏 《Tiki Docker Compose 部署指南》 篇。

一、环境信息

  • 部署宿主:Ubuntu 26.04.1 LTS,x86_64
  • 运行环境:Apache 2.4.69 + PHP 8.4.27(Tiki 30.1)
  • 数据库:MariaDB 10.11.19
  • 配置载体:
    • /usr/local/etc/php/conf.d/tiki.ini(PHP 运行参数)
    • /var/www/html/db/local.php(数据库连接)
    • 数据库表 tiki_preferences(站点偏好覆盖值)
    • 内核默认值定义在 /var/www/html/lib/prefs/*.php
  • 演示管理账号:admin / q1w2e3r4

二、前置条件

  1. 站点已完成安装并能正常登录后台。
  2. 具备命令行执行权限:
php console.php tiki:info
PHP version: 8.4.27
Tiki version: 30.1
  1. 数据库可连接(用于核对偏好覆盖值):
mariadb -utiki -pq1w2e3r4 tiki -e 'SELECT COUNT(*) FROM tiki_preferences;'
10

💡 说明:Tiki 的偏好项绝大多数没有写进 tiki_preferences,未写入即使用 lib/prefs/*.php 中的默认值。因此“表里只有 10 行”不代表配置少,而是只有 10 项被显式覆盖。

三、参数查看与修改方式

3.1 Web 后台

管理员登录后进入“设置”区,常用页面:

后台页面覆盖的参数域
设置 → 常规站点关闭、首页、主题、时区、联系信息
设置 → 功能Wiki、Trackers、论坛、文章、博客、文件库、日历等总开关
设置 → 语言默认语言、多语言、语言切换
设置 → 性能会话存储、缓存、索引重建策略
设置 → 搜索统一索引、Elasticsearch/Manticore 连接
设置 → 文件与上传上传上限、文件库存储方式
设置 → 登录与安全双因素、防暴力破解、会话、Cookie、CORS
设置 → 邮件发件方式、SMTP、邮件队列

Web 后台是官方主路径,适合逐项查看说明与依赖关系;缺点是批量修改与自动化困难。

3.2 命令行读写

php console.php preferences:get feature_wiki
Preference feature_wiki has value y

php console.php preferences:get session_lifetime
Preference session_lifetime has value 10080

php console.php preferences:get wikiHomePage
Preference wikiHomePage has value HomePage

写入示例(实测把一个功能从开启改为关闭):

php console.php preferences:set feature_search n
Preference feature_search was successfully set to n in the database.

⚠️ 注意:本次实测 preferences:set <flag> y 返回 exit=1 且无任何输出,数据库也未写入。也就是说 30.1 的 CLI 在“把 flag 类偏好设为 y”时存在异常;关闭(n)与文本/数字类写入正常。需要开启功能时,优先走 Web 后台,或用数据库写入后清缓存(见 3.3)。

3.3 直接读写数据库

查看显式覆盖项:

mariadb -utiki -pq1w2e3r4 tiki -e \
  "SELECT name,value FROM tiki_preferences ORDER BY name;"

实测输出(节选,长值已截断):

name	value
auth_token_secret	6603cdab40cd8eb1b244c0cf3e0d6a9ff4b9869c826edc630cb6e47184bec162
feature_tracker	y
internal_site_hash	aw2fdlqYPAwcZQwpEOE/YWLUNugTVubpniX7har6HjFOP1i3jDO+tEURmuOsvgOv3+CbeE41hDOjkfvTrRzwzCkeJMSiwUG70VwQeo3flDKEsexOO3+A81Upd9S3bF4/o2S3g==
unified_field_count	59
unified_identifier_fields	a:26:{...}
unified_last_rebuild_mysql	1793613555
unified_last_rebuild_stats_mysql	a:1:{...}
unified_mysql_index_current	index_6ae85ef3a3076
unified_mysql_index_rebuilding	index_6ae85ef3a3076
unified_total_fields	59

恢复默认值的方法是删除对应行(默认值在代码里):

mariadb -utiki -pq1w2e3r4 tiki -e \
  "DELETE FROM tiki_preferences WHERE name='feature_search';"
php console.php cache:clear
Clearing all caches

⚠️ 注意:直接改数据库后必须清缓存,否则 CLI 与 Web 端可能继续读到旧值。本次实测删除 feature_search 行后立即 preferences:get 仍返回 n,执行 cache:clear 后才恢复为默认 y。

3.4 配置文件

数据库连接(安装向导生成,属主 www-data):

$host_tiki='db';
$user_tiki='tiki';
$pass_tiki='q1w2e3r4';
$dbs_tiki='tiki';
$client_charset='utf8';

PHP 运行参数(tiki.ini):

memory_limit = 256M
max_execution_time = 120
post_max_size = 64M
upload_max_filesize = 64M
date.timezone = Asia/Shanghai
log_errors = On
error_log = /var/www/html/temp/php_apache_error.log
error_reporting = E_ALL

Tiki 还支持 db/local.ini 与 db/system_local.ini 做系统级配置(在多站点/多实例场景下用于统一注入),启用方式是在 db/local.php 中设置:

$system_configuration_files = ['db/local.ini', 'db/system_local.ini'];

💡 说明:local.php 是“PHP 代码”,local.ini 是“配置项文件”。前者适合数据库连接与少量全局变量,后者适合由运维统一管理、不希望站点管理员在后台改动的参数。

四、参数总览

以下为安装完成后实测的有效值与默认值:

参数实测有效值内核默认值类型作用
feature_wikiyyflagWiki 页面与协作编辑
feature_trackersyyflagTracker 表单/数据库应用
feature_forumsnnflag论坛
feature_articlesnnflag文章/新闻发布
feature_blogsnnflag博客
feature_file_galleriesyyflag文件库
feature_calendarnnflag日历与事件
feature_searchyyflag统一搜索索引
languageenenlist站点默认语言
session_storagedbdblist会话存储位置
session_lifetime1008010080text(分钟)会话最短有效时长
themedefaultdefaultlist站点主题
wikiHomePageHomePageHomePagetext默认首页
site_closednnflag关闭站点(维护模式)

五、核心参数分类详解

5.1 站点访问与主题

  • site_closed:设为 y 后站点进入维护模式,未授权用户只看到登录表单。维护窗口结束务必改回 n。
  • site_closed_title / site_closed_msg:维护页标题与提示语,依赖 site_closed 生效。
  • theme:站点主题,取值为 Bootstrap 变体;实测默认 default。
  • theme_option:主题的附加样式表,留空表示不叠加。
  • wikiHomePage:默认首页页面名;页面不存在时 Tiki 会自动创建。实测 HomePage。

修改主题后建议清缓存,避免旧 CSS 继续被浏览器/服务端缓存引用:

php console.php cache:clear

5.2 功能开关

Tiki 的功能开关集中在 lib/prefs/feature.php,原则是“用不到就关”:

参数默认开启后的主要成本
feature_wikiy内核核心,不建议关闭
feature_trackersy后台菜单、Tracker 表与索引字段增加
feature_forumsn版块/帖子表、通知与权限项
feature_articlesn文章类型、发布流、RSS
feature_blogsn博客权限与主题渲染
feature_file_galleriesy附件存储与磁盘配额
feature_calendarn日历表、时区处理、提醒任务
feature_searchy统一索引重建开销与索引表增长

💡 说明:功能开关不是“越多越好”。每开一个功能,后台菜单、权限项、索引字段与升级路径都会增加。生产环境建议先列需求清单,再逐项开启,并记录开启原因。

5.3 语言与区域

  • language:站点默认语言,默认 en。中文站点改为 zh(Tiki 语言代码为 zh,界面翻译完整度以官方语言包为准)。
  • language_admin:后台界面语言,留空表示沿用站点语言。
  • site_timezone:站点时区。Tiki 30 对时区管理有改进,但数据库与 PHP 时区仍需一致,否则日志与日历事件会偏移。
  • 多语言内容:开启 feature_multilingual 后,页面可绑定语言版本,搜索与菜单按语言过滤。

5.4 会话与性能

  • session_storage:默认 db(会话存数据库)。优点是重启 Web 服务不丢会话、便于多节点共享;缺点是每个请求都读写数据库。高并发站点可切到 memcache,但需要先部署 Memcached 并配置连接。
  • session_lifetime:默认 10080 分钟(7 天)。这是“最短登录保持时间”,要精确生效还需调整 PHP 的 session.gc_probability 与 session.gc_divisor。
  • cache 相关:Tiki 有文件缓存与模板缓存,修改主题/模块后应清缓存;生产环境建议保留模板缓存,避免每次请求重编译 Smarty 模板。
  • memory_limit:PHP 层参数。安装向导、Tracker 批量操作、PDF 生成是内存高峰场景,256M 起步,大附件/大报表建议 512M。

5.5 上传与附件

  • upload_max_filesize / post_max_size:PHP 层硬上限,必须 ≥ 业务允许的单文件大小;post_max_size 还要覆盖表单其余字段,通常设为上传上限的 1.2–1.5 倍。
  • max_upload_size:Tiki 应用层对文件库上传的限制,需与 PHP 层上限协调;应用层大于 PHP 层时,用户会看到“超过上限”的模糊报错。
  • 文件库存储方式:Tiki 支持数据库存储与文件系统存储。文件系统模式性能更好、备份更直观;数据库模式便于整体迁移但会让库体积快速增长。

5.6 搜索索引

  • feature_search:统一索引总开关,默认 y。
  • 索引引擎:MySQL full-text(零外部依赖)、Elasticsearch(需独立集群)、Manticore(兼容 Sphinx、资源占用较低)。
  • unified_* 表项:tiki_preferences 中的 unified_field_count=59、unified_total_fields=59、unified_mysql_index_current=index_6ae85ef3a3076 是索引元数据,不要手工修改。
  • 重建命令:php console.php index:rebuild。实测执行耗时约 2 秒、查询 7248 次、峰值内存约 49.7 MiB(空内容站点基线)。
  • 定期重建:官方建议用 cron 定期执行 index:rebuild 或 index:catch-up,否则新增内容可能搜不到。

5.7 Tracker 与权限

  • Tracker 字段类型:文本、数字、日期、用户、条目链接、文件、地理位置、条码等。字段的 searchable、public、mandatory 标记会影响索引与表单校验。
  • 权限粒度:Tracker 可分别控制“查看、创建、编辑、删除、导出、评论”等权限;Wiki 可按页面/分类授权;文件库可按 gallery 授权。
  • 权限继承:用户可属于多个组,权限取并集;匿名用户属于 Anonymous 组,登录用户至少属于 Registered 组。
  • 敏感字段:Tiki 30 对敏感字段有专门处理,启用后需确认搜索索引与导出是否脱敏。

5.8 邮件与通知

  • 发件方式:PHP mail()、SMTP、Sendmail。生产环境建议 SMTP,便于统一投递与退信处理。
  • 邮件队列:Tiki 30 把邮件队列迁移到 Symfony Mail,后台可查看队列与失败原因。
  • 通知开关:站内通知、邮件通知、每日摘要分别控制;批量通知会触发邮件队列,需配合 cron 或后台作业队列执行。

5.9 安全

  • 双因素认证:可按用户组强制启用;Tiki 30 改进 2FA、WebAuthn/Passkey 与恢复码流程。
  • 暴力破解防护:对登录失败次数、锁定时间、验证码策略进行限制。
  • 会话与 Cookie:生产环境应启用 HTTPS、Secure Cookie、合理设置 SameSite;反向代理场景要正确配置可信代理,否则客户端 IP 与协议识别会错。
  • CORS/SSRF:Tiki 30 对 CORS 与 SSRF 有专门防护,接入外部 RSS/图片代理时不要随意放开。
  • 安装目录:安装完成后锁定/移除 tiki-install.php,并确保 db/local.php 不可被 Web 直接下载。

六、生产配置模板

6.1 4GB 内存 / 50GB 磁盘 / 20 人团队

; tiki.ini
memory_limit = 256M
max_execution_time = 120
post_max_size = 64M
upload_max_filesize = 48M
date.timezone = Asia/Shanghai
session_storage = db
session_lifetime = 10080
feature_wiki = y
feature_trackers = y
feature_file_galleries = y
feature_search = y
feature_forums = n
feature_articles = n
feature_blogs = n
feature_calendar = n

适用:以知识库 + 轻量台账为主,附件以文档/图片为主,日活 20 人以内。

6.2 8GB 内存 / 200GB 磁盘 / 100 人团队

; tiki.ini
memory_limit = 512M
max_execution_time = 180
post_max_size = 256M
upload_max_filesize = 200M
date.timezone = Asia/Shanghai
session_storage = db
session_lifetime = 43200
feature_wiki = y
feature_trackers = y
feature_file_galleries = y
feature_search = y
feature_forums = y
feature_articles = y
feature_calendar = y

适用:部门级知识库 + 工单/资产台账 + 内部公告,附件含较大 PDF/视频压缩包。建议把文件库切到文件系统存储,并为 storage/ 单独规划磁盘。

6.3 16GB 内存 / NVMe / 500 人以上

; tiki.ini
memory_limit = 512M
max_execution_time = 300
post_max_size = 512M
upload_max_filesize = 400M
date.timezone = Asia/Shanghai
opcache.memory_consumption = 256
opcache.max_accelerated_files = 20000
opcache.validate_timestamps = 0
session_storage = memcache
session_lifetime = 43200
feature_wiki = y
feature_trackers = y
feature_file_galleries = y
feature_search = y
feature_forums = y
feature_articles = y
feature_blogs = y
feature_calendar = y

适用:多部门/多站点、检索量大。建议:独立 MariaDB(不与应用同机竞争内存)、Elasticsearch 或 Manticore 承担检索、Memcached 承担会话、反向代理承担 TLS 与静态缓存。opcache.validate_timestamps = 0 意味着改代码后必须重启 PHP/Apache 才生效,升级流程要写进变更单。

⚠️ 注意:以上模板中的内存/磁盘/人数为规划建议,不是压测结论。上线前应按真实内容量与并发做一轮基准测试,重点观察 PHP 内存峰值、MariaDB 慢查询、索引重建耗时与磁盘增长。

七、常见问题

7.1 preferences:get 返回 Preference not found.

说明该名称不是有效偏好。Tiki 的偏好名与后台显示名不同(例如后台叫“Wiki”,参数名是 feature_wiki),以 lib/prefs/*.php 中的数组键为准。实测 preferences:get site_title 与 browser_title 都返回 Preference not found.,因为这两个名称不是 Tiki 偏好项。

7.2 preferences:set 把 flag 设为 y 失败

实测 30.1 的 CLI 对 flag 类型执行 preferences:set feature_search y 返回 exit=1 且无输出,数据库未写入;设为 n 则成功。规避方式:

  1. 用 Web 后台“设置 → 功能”开启;
  2. 或写入数据库后清缓存:
mariadb -utiki -pq1w2e3r4 tiki -e \
  "INSERT INTO tiki_preferences (name,value) VALUES ('feature_articles','y') \
   ON DUPLICATE KEY UPDATE value='y';"
php console.php cache:clear

7.3 改了参数但不生效

按顺序排查:是否只改了 tiki_preferences 却没清缓存;是否被 db/local.ini / system_local.ini 覆盖;是否改的是 PHP 层参数却未重启 Web 服务;是否改的是“依赖项”而未先开启父级功能。

7.4 会话频繁掉线

检查 session_lifetime、PHP session.gc_maxlifetime、反向代理的超时与 Cookie 域。session_storage=db 时还要确认数据库连接稳定;数据库重启会清空会话表,表现为全员掉线。

7.5 上传大文件失败但 PHP 上限已调大

同时检查 post_max_size、应用层上传上限、反向代理 client_max_body_size、磁盘余量与 temp/ 可写性。任一层小于文件大小都会失败,且报错位置不同。

八、参考链接

Tiki 30.1 配置参数详解 - Quzuo