Tiki 30.1 配置参数详解
Tiki 30.1 配置参数详解:PHP 运行参数、local.php 数据库连接、tiki_preferences 站点偏好三层配置,含实测有效值、CLI 读写与 4GB/8GB/16GB 生产模板。
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
二、前置条件
- 站点已完成安装并能正常登录后台。
- 具备命令行执行权限:
php console.php tiki:info
PHP version: 8.4.27
Tiki version: 30.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_wiki | y | y | flag | Wiki 页面与协作编辑 |
feature_trackers | y | y | flag | Tracker 表单/数据库应用 |
feature_forums | n | n | flag | 论坛 |
feature_articles | n | n | flag | 文章/新闻发布 |
feature_blogs | n | n | flag | 博客 |
feature_file_galleries | y | y | flag | 文件库 |
feature_calendar | n | n | flag | 日历与事件 |
feature_search | y | y | flag | 统一搜索索引 |
language | en | en | list | 站点默认语言 |
session_storage | db | db | list | 会话存储位置 |
session_lifetime | 10080 | 10080 | text(分钟) | 会话最短有效时长 |
theme | default | default | list | 站点主题 |
wikiHomePage | HomePage | HomePage | text | 默认首页 |
site_closed | n | n | flag | 关闭站点(维护模式) |
五、核心参数分类详解
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_wiki | y | 内核核心,不建议关闭 |
feature_trackers | y | 后台菜单、Tracker 表与索引字段增加 |
feature_forums | n | 版块/帖子表、通知与权限项 |
feature_articles | n | 文章类型、发布流、RSS |
feature_blogs | n | 博客权限与主题渲染 |
feature_file_galleries | y | 附件存储与磁盘配额 |
feature_calendar | n | 日历表、时区处理、提醒任务 |
feature_search | y | 统一索引重建开销与索引表增长 |
💡 说明:功能开关不是“越多越好”。每开一个功能,后台菜单、权限项、索引字段与升级路径都会增加。生产环境建议先列需求清单,再逐项开启,并记录开启原因。
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、
SecureCookie、合理设置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 则成功。规避方式:
- 用 Web 后台“设置 → 功能”开启;
- 或写入数据库后清缓存:
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 运行环境要求(PHP/数据库/PHP 扩展):https://doc.tiki.org/Requirements
- Tiki 偏好项参考(后台设置说明入口):https://doc.tiki.org/Preferences
- Tiki 30 变更日志:https://doc.tiki.org/Tiki30.0
- Tiki 官方文档首页:https://doc.tiki.org/
- Tiki 源码仓库(
lib/prefs/为偏好定义事实源):https://gitlab.com/tikiwiki/tiki