Froxlor 2.3.16 配置参数详解

Froxlor 2.3.16 配置体系三层结构(GUI/panel_settings 表/userdata.inc.php)实测详解:276 行参数 20 组分布全量盘点、system/panel/phpfpm/customer/login/api 各组核心参数逐项说明、GUI 分组页与 SQL 改值闭环实测、panel_settinggroups 表名证伪与 distro_mismatch 实录、生产配置模板(Ubuntu 22.04 + MariaDB 10.11 + PHP 8.2 实测,2026-11-02)。

FroxlorFroxlor面板虚拟主机PHP自托管2026/11/03

Froxlor 2.3.16 配置参数详解

目标:把 Froxlor 2.3.16 的全部配置参数(panel_settings 表 276 行、20 个分组)按"在哪看、怎么改、什么含义、改完怎么生效"讲透,并给出生产配置模板与三条改值/排障实录。已在 Ubuntu 22.04 服务器 + Froxlor 2.3.16(PHP 8.2.35 / MariaDB 10.11.19 / Apache 2.4.69)实测通过。

Froxlor 没有传统面板的"主配置文件":除数据库连接凭据外,所有配置参数都存在 MySQL/MariaDB 的 panel_settings 表里,Web 界面只是这张表的编辑器,CLI 任务作业读取同一张表渲染下游服务配置。部署过程见《Froxlor 2.3.16 Docker Compose 部署指南》,组件背景见《Froxlor 介绍与选型指南》。

一、环境信息

项目取值
服务器操作系统Ubuntu 22.04(x86_64)
Froxlor 版本2.3.16(db_version 202608210,stable 通道)
PHP / Web 服务器8.2.35 / Apache 2.4.69(面板自身 mod_php 模式)
数据库MariaDB 10.11.19,库名 froxlor
演示环境形态Docker Compose 栈(项目 froxlor-2.3.16-stack,见部署篇);进入服务后所有 SQL/文件操作与主机安装形态完全一致
面板账号admin / q1w2e3r4
数据库凭据文件/var/www/html/froxlor/lib/userdata.inc.php(0600,www-data)
参数总量panel_settings 276 行(实测 SELECT COUNT(*),见 4.1)
面板访问http://<服务器>:8141/

二、前置条件

  1. 面板已完成安装并可登录(安装链路见部署篇 4.9–4.11;未安装时 panel_settings 只有 276 行出厂值,改参数无意义);
  2. 具备进入服务执行命令的通道(主机形态直接 SSH;本演示环境为 docker compose exec froxlor bash);
  3. 能连上面板数据库:凭据在 userdata.inc.php,本环境业务账号 froxlor/q1w2e3r4、全权限安装账号 froxroot/q1w2e3r4、主机名 db;
  4. 改参数前建议备份:mysqldump -h db -u froxroot -pq1w2e3r4 froxlor > settings-backup.sql。

三、参数查看与修改方式

Froxlor 的配置分三层,互相独立、职责不同:

层载体内容修改方式
GUI 层panel_settings 表的可视化编辑器全部 276 项业务参数后台"系统 → 设置"按分组编辑保存
SQL 层直接操作 panel_settings 表同上(GUI 不可达/批量场景)mysql 客户端 UPDATE
连接层lib/userdata.inc.php仅数据库连接(host/user/password/db + root 账号列表)手工编辑文件(GUI 的"数据库服务器"页写回的也是它)

3.1 GUI 层:分组设置页

后台路径 System(系统)→ Settings(设置),每个分组一张编辑表单。分组页 URL 形态为 admin_settings.php?part=<分组名>,实测抓取 panel 分组页并核对 paging 参数当前值:

curl -s -b cookies.txt -o settings.html -w "GET admin_settings.php?part=panel -> %{http_code}\n" \
  http://127.0.0.1:8141/admin_settings.php?part=panel
grep -o -m1 'panel_paging[^<]*' settings.html
grep -o -m1 'value="20"' settings.html
GET admin_settings.php?part=panel -> 200
panel_paging" class="col-sm-6 col-form-label pe-3">
value="20"

表单字段命名规则为 <settinggroup>_<varname>(如 panel_paging、session_sessiontimeout),保存即 UPDATE panel_settings。

💡 说明:GUI 有"简单/专家"两种模式(panel.settings_mode,实测出厂 0=简单模式),简单模式会隐藏标记为不常用/不兼容的参数(system.hide_incompatible_settings 实测 1);要看全量 276 项请切专家模式,或直接走 SQL 层。

3.2 SQL 层:panel_settings 表

表结构一行一参数:settinggroup(分组)、varname(参数名)、value(值),读取时拼成 组.参数(代码里 Settings::Get('panel.paging'))。实测读取与修改闭环:

mysql -h db -u froxroot -pq1w2e3r4 froxlor -e \
  "SELECT settinggroup, varname, value FROM panel_settings WHERE varname='paging'"
mysql -h db -u froxroot -pq1w2e3r4 froxlor -e \
  "UPDATE panel_settings SET value='25' WHERE settinggroup='panel' AND varname='paging'"
mysql -h db -u froxroot -pq1w2e3r4 froxlor -e \
  "SELECT settinggroup, varname, value FROM panel_settings WHERE varname='paging'"
settinggroup	varname	value
panel	paging	20
settinggroup	varname	value
panel	paging	25

改回 20 后复核(见 7.2 实录与注意事项)。

⚠️ 注意:SQL 层改值立即对面板进程生效(每次请求现读),但凡是"影响下游服务配置文件"的参数(vhost、DNS、邮件表等),必须等一次 froxlor:cron 'tasks' 任务作业重新渲染才落到 /etc/apache2 等目录——手动触发:php /var/www/html/froxlor/bin/froxlor-cli froxlor:cron 'tasks' -f(实测回显见部署篇 4.11)。

3.3 连接层:userdata.inc.php

安装器生成(实测 ls -l:-rw------- 1 www-data www-data 303),内容节选:

<?php
// autogenerated froxlor file

$sql = [
	'debug' => false,
	'host' => 'db',
	'user' => 'froxlor',
	'password' => 'q1w2e3r4',
	'db' => 'froxlor',
];
$sql_root = [
	'0' => [
		'caption' => 'Default',
		'host' => 'db',
		'user' => 'froxroot',
		'password' => 'q1w2e3r4',
	],
];
  • $sql:面板日常读写用的业务账号(仅需 froxlor 库权限);
  • $sql_root:数组,可登记多套 root 级凭据——多数据库服务器场景(admin_mysqlserver.php 里每加一台就追加一项);面板建客户库/账号走这里,所以必须带转授权限;
  • 'debug' => true 可让面板把 SQL 错误详情打到页面,排障用,生产保持 false。

3.4 安装层:install.json

无人值守安装的 JSON 字段(mysql_*/admin_*/distribution/serveripv4/webserver 等,见部署篇 4.9)本质是"一次性批量写上述三层":mysql_* → userdata.inc.php,其余 → panel_settings。已装环境改参不走这条路,用 froxlor:config-services -i <file> 导入另一台安装的设置属于迁移范畴(见 CLI 篇相关命令)。

四、参数总览

4.1 总量与分组分布(实测)

mysql -h db -u froxroot -pq1w2e3r4 froxlor -e "SELECT COUNT(*) AS total FROM panel_settings"
mysql -h db -u froxroot -pq1w2e3r4 froxlor -e \
  "SELECT settinggroup, COUNT(*) AS n FROM panel_settings GROUP BY settinggroup ORDER BY n DESC"
total
276
settinggroup	n
system	170
panel	43
phpfpm	16
antispam	7
customer	6
logger	5
defaultwebsrverrhandler	5
admin	3
login	3
api	2
session	2
mail	2
spf	2
dmarc	2
customredirect	2
perl	2
catchall	1
2fa	1
caa	1
nginx	1

解读:system 组独占 170 行(62%),是"面板接管主机哪些服务、怎么接管"的总账;panel 组 43 行管界面与品牌;其余小分组各管一个功能域(phpfpm 进程池、antispam 反垃圾、spf/dmarc/caa 邮件 DNS 记录模板、login/session/2fa/api 登录与会话……)。没启用的功能域参数保持出厂默认即可,不必清理。

4.2 第二张设置表:domain_ssl_settings

库内匹配 %setting% 的表实测只有两张:

Tables_in_froxlor (%setting%)
domain_ssl_settings
panel_settings

panel_settings 是全局参数;domain_ssl_settings 是按域名覆盖的 SSL 参数表(每个域名的证书类型/SSL 特殊设置等,对应后台域名编辑页的 SSL 区块),不属于全局配置体系,本文不展开。

五、核心参数分类详解

以下逐项取自本环境实测值(SELECT settinggroup, varname, value FROM panel_settings 全量 276 行导出),"本环境值"即 2.3.16 出厂默认或安装器写入值。

5.1 system:主机与网络

参数本环境值说明
system.hostnamepanel.froxlor.test面板主机名,进 vhost ServerName 与邮件域校验
system.ipaddress10.89.68.10面板监听 IP,vhost 文件名即 10_froxlor_ipandport_<IP>.<端口>.conf;换 IP 用 froxlor:switch-server-ip(CLI 篇)
system.defaultip1新域名默认分配的 IP/端口组合 ID(对应 panel_ipsandports 表)
system.froxlordirectlyviahostname1允许直接通过主机名访问面板站点
system.validate_domain1添加域名时做语法/保留字校验
system.nameservers空域名 NS 记录值,启用 DNS 托管时必填
system.mxservers空域 MX 记录值,同上
system.axfrservers空允许 zone 传输的对端 IP 列表
system.mysql_access_hostdb,10.89.68.10面板为客户建库时写入的访问主机白名单(多库服务器逐台维护)
system.httpuser / system.httpgroupwww-data / www-dataWeb 服务器运行账号,进所有生成配置的文件属主
system.froxlorusergroup空面板专属用户/组(留空用 httpuser)

5.2 system:Web 服务器与站点

参数本环境值说明
system.webserverapache2接管的 Web 服务器(apache24/nginx 二选一,安装时定)
system.apacheconf_vhost/etc/apache2/sites-enabled/vhost 生成目录
system.apacheconf_diroptions/etc/apache2/sites-enabled/目录选项(htaccess 替代)文件目录
system.apacheconf_htpasswddir/etc/apache2/froxlor-htpasswd/密码保护站点 htpasswd 存放目录
system.apachereload_commandservice apache2 reload配置渲染后的重载命令,可改 systemctl
system.documentroot_prefix/var/customers/webs/客户站点根前缀
system.deactivateddocroot/var/www/html/froxlor/templates/misc/deactivated/停用站点指向的"已停用"页
system.logfiles_directory/var/customers/logs/客户访问/错误日志目录
system.logfiles_type1日志格式(combined);logfiles_piped 可接管道压缩
system.errorlog_levelwarnApache 错误日志级别
system.traffictoolgoaccess流量统计工具(awstats/webalizer/goaccess 三选一,awstats_* 组参数配套)
system.customredirect.enabled / default1 / 1是否允许客户自定义重定向状态码(配合 redirect_codes 表)
system.defaultwebsrverrhandler.enabled0全局自定义 401/403/404/500 错误页开关(err401~err500 四项配套)

💡 技术拓展:Froxlor 支持三种 PHP 运行模式,客户站点行为由此分岔——

模式开关参数隔离性
mod_php面板自身使用(安装 webserver_backend)无,全部站点同 httpuser
PHP-FPMphpfpm.enabled(本环境 0)每客户/域名独立进程池,隔离最好
FCGIDsystem.mod_fcgid(本环境 0)按 Unix 用户隔离,配 mod_fcgid_* 12 项

生产托管建议至少启用 PHP-FPM(见第六章模板),本演示环境保持 mod_php 单模式。

5.3 system:邮件与 FTP

参数本环境值说明
system.mtaserver / system.mdaserverpostfix / dovecot出站/投递服务选型(面板据此渲染对应配置模板)
system.ftpserverproftpdFTP 服务选型(当前仅支持 proftpd)
system.vmail_uid / vmail_gid2000 / 2000邮件虚拟用户 UID/GID,所有邮箱文件属主
system.vmail_homedir / vmail_maildirname/var/customers/mail/ / Maildir邮箱目录布局
system.mail_quota_enabled / mail_quota0 / 100邮箱配额开关与默认额度(MB)
system.mailpwcleartext0是否明文存邮箱密码(默认否;后台有专项页一键清除残留,见 admin_settings.php?page=wipecleartextmailpws)
system.mail_use_smtp / mail_smtp_host / mail_smtp_port / mail_smtp_auth / mail_smtp_usetls0 / localhost / 25 / 1 / 1面板自身发信走 SMTP relay 的配置(默认直接本机投递)
system.mailtraffic_enabled1统计邮件流量计入客户流量配额
system.mtalog / system.mdalog/var/log/mail.log出站/投递流量日志采集路径(maillog 解析口径)
system.allow_customer_shell / available_shells0 / 空是否允许客户拿到真实 shell 账户

5.4 system:DNS、TLS 与 Let's Encrypt

参数本环境值说明
system.bind_enable / system.dns_server / system.dnsenabled0 / Bind / 0DNS 托管总开关与后端(Bind/PowerDNS,powerdns_mode 默认 Native)
system.bindconf_directory/etc/bind/BIND zone 文件目录
system.bindreload_commandservice bind9 reloadzone 渲染后重载命令
system.defaultttl604800自动建 zone 的默认 TTL(秒)
system.dns_createcaaentry / dns_createhostnameentry / dns_createmailentry1 / 0 / 0面板自动写 CAA/主机名/MX 记录开关
system.leenabled / leregistered / leaccount0 / 0 / 空Let's Encrypt 总开关、账号注册状态(本演示未启用,froxlor:validate-acme-webroot 实测直接提示未激活)
system.letsencryptca / leapiversion / letsencryptkeysizeletsencrypt / 2 / 4096CA 环境(生产用 letsencrypt,测试用 letsencrypt-staging)、ACME 版本、密钥位数
system.acmeshpath/root/.acme.sh/acme.shacme.sh 路径(签发引擎)
system.letsencryptchallengepath/var/www/html/froxlorACME webroot 校验路径(与 CLI 篇 validate-acme-webroot 联动)
system.le_domain_dnscheck / le_domain_dnscheck_resolver1 / 1.1.1.1签发前做域名解析校验及所用 DNS 服务器
system.le_renew_hooksystemctl restart postfix dovecot proftpd证书续期后重载服务钩子
system.le_froxlor_enabled / le_froxlor_redirect0 / 0面板自身域名是否也用 LE 证书/强制跳转
system.use_ssl / ssl_cert_file / ssl_key_file0 / /etc/ssl/froxlor_selfsigned.pem / /etc/ssl/froxlor_selfsigned.key面板自身 TLS 开关(安装器已备好自签证书,开 1 即启用)
system.ssl_protocols / ssl_cipher_listTLSv1.2 / ECDHE 全家桶串生成 vhost 的 TLS 基线(TLSv1.3 单独走 tlsv13_cipher_list)
system.hsts_maxage / hsts_incsub / hsts_preload10368000 / 0 / 0HSTS 参数(120 天,不含子域)
system.http2_support / http3_support / honorcipherorder0 / 0 / 0协议开关
system.customer_ssl_path/etc/ssl/froxlor-custom/客户证书存放目录

5.5 system:任务作业、发行版模板与更新

参数本环境值说明
system.cronconfig/etc/cron.d/froxlor面板自管的调度文件(安装生成,勿手编)
system.croncmdline/usr/bin/nice -n 5 /usr/bin/php -q调度行命令前缀——硬编码 /usr/bin/php,非标准 PHP 路径环境需改这里或建符号链接(部署篇 11.3)
system.crondreloadservice cron reload调度文件更新后重载命令
system.debug_cron0置 1 后 cron 任务输出写 syslog 便于排障
system.lastcronrun / last_tasks_run / last_traffic_run时间戳各作业最近执行时刻(巡检用)
system.distributionbookworm服务配置模板线(可选 bullseye/bookworm/trixie/focal/jammy/noble,froxlor:config-diff -l 实测清单)
system.distro_mismatch1面板自检发现所选模板线与实际发行版不符(实录见 7.3)
system.update_channelstable更新通道
system.cron_allowautoupdate0是否允许 cron 顺带自动更新
system.report_enable / report_webmax / report_trafficmax1 / 90 / 90资源用量告警邮件阈值(%)
system.send_cron_errors0cron 出错是否发信给管理员
system.sessiontickets / sessionticketsenabled1 / 1表单 CSRF ticket 机制(安全项,勿关)

5.6 panel 组:界面、品牌与口令策略

参数本环境值说明
panel.version / panel.db_version2.3.16 / 202608210本体/库结构版本,升级核对用
panel.is_configured1安装完成标志(置 0 会退回安装向导)
panel.frontendfroxlor前端形态(froxlor 经典 Bootstrap)
panel.paging20列表每页行数(SQL 改值实测见 7.2)
panel.standardlanguageen默认语言(界面逐用户可切,lng/ 含中文包)
panel.default_theme / allow_theme_change_*Froxlor / 1/1主题与是否允许管理/客户换主题
panel.menu_collapsed / natsorting1 / 1侧栏折叠、自然排序
panel.settings_mode0设置页简单/专家模式
panel.adminmail / adminmail_defnameadmin@froxlor.test / Froxlor Administrator面板发信人(安装器按 admin 邮箱写入)
panel.password_min_length0出厂不强制长度,生产必改(见第六章)
panel.password_alpha_lower / alpha_upper / numeric / special_char_required1 / 1 / 0 / 0口令复杂度:默认仅要求含小写+大写
panel.password_special_char!?<>§$%+#=@"特殊字符"认定集合
panel.password_regex空可另挂自定义正则
panel.login.deactivatetime / maxloginattempts / domain_login900 / 3 / 0(login 组)失败 3 次锁定 15 分钟;是否允许"用户@域名"登录
panel.phpmyadmin_url / webmail_url / webftp_url空外部工具入口链接(phpMyAdmin/Roundcube 等)
panel.imprint_url / privacy_url / terms_url空法务页脚链接
panel.unix_names1客户 Unix 账号命名规则
panel.decimal_places4流量数值小数位
panel.sendalternativemail / allow_preset0 / 1通知邮件抄送备用地址;是否允许客户预置套餐

5.7 login / session / 2fa / api:登录安全四组

参数本环境值说明
login.maxloginattempts3失败锁定阈值(解锁用 froxlor:user <用户> -u,CLI 篇实测)
login.deactivatetime900锁定时长(秒)
session.sessiontimeout600会话空闲超时(秒),GUI 保存时校验不得低于 60(源码 admin_settings.php 第 72 行实测逻辑)
session.allow_multiple_login0禁止同账号多会话并行
2fa.enabled1允许用户启用 TOTP 双因素(逐用户在个人页开启,panel_2fa_tokens 表存储)
api.enabled0JSON API 总开关(默认关;开启后在"设置→API"生成密钥,配合 froxlor:api-call/HTTP api.php)
api.customer_default1新客户默认允许用 API

5.8 customer / phpfpm:默认资源与进程池

customer 组 6 项是新客户命名/默认值模板(真正的配额在 panel_plans/panel_customers 表):

参数本环境值说明
customer.accountprefixweb客户 Unix 账号前缀(web1、web2…)
customer.ftpprefix / mysqlprefixftp / sqlFTP 账号、数据库名前缀
customer.ftpatdomain0FTP 用户名是否带域名后缀

phpfpm 组 16 项(本环境 enabled=0,启用后生效):

参数本环境值说明
phpfpm.enabled / enabled_ownvhost0 / 0FPM 总开关;面板自身是否也走 FPM
phpfpm.vhost_httpuser / vhost_httpgroupfroxlorlocalFPM 池运行账号(与 Apache 解耦的降权账号)
phpfpm.aliasconfigdir / fastcgi_ipcdir/var/www/php-fpm/ / /var/lib/apache2/fastcgi/池配置与 socket 目录
phpfpm.tmpdir/var/customers/tmp/每客户上传临时目录(open_basedir 联动)
phpfpm.envpath/usr/local/bin:/usr/bin:/bin池 PATH
phpfpm.ini_admin_flags / ini_admin_values长白名单仅管理员可改的 php.ini 项(含 memory_limit、open_basedir、disable_functions 等 16+26 项,实测全量值见 SELECT 导出)
phpfpm.ini_flags / ini_values长白名单客户可自改的 php.ini 项(display_errors、upload_max_filesize、max_execution_time 等)
phpfpm.vhost_defaultini2新站点默认 php.ini 方案

5.9 功能域小组速查

组(行数)关键参数与本环境值一句话
antispam (7)activated=0、config_file=/etc/rspamd/local.d/froxlor_settings.conf、reload_command=service rspamd restart、dkim_keylength=1024、default_policy_greylist=1rspamd 对接:开关、配置落点、DKIM 位数、灰名单
spf / dmarc / caa (各1-2)use_spf=0、spf_entry=v=spf1 a mx -all;use_dmarc=0、dmarc_entry=v=DMARC1; p=none;;caa_entry 空面板自动写这三类 DNS 记录的模板值,启用后逐域生成
catchall (1)catchall_enabled=1允许域名级邮箱全收
logger (5)enabled=1、logtypes=syslog,mysql、severity=1、log_cron=0面板操作日志双写(syslog+panel_syslog 表),级别 1=仅重要
mail (2)allow_external_domains=0、enable_allow_sender=0是否允许添加非本机邮件域/自定义发信人
customredirect (2)enabled=1、default=1自定义重定向(见 5.2)
nginx (1) / perl (2)fastcgiparams=/etc/nginx/fastcgi_params;suexecpath=/var/www/cgi-bin/仅 webserver=nginx 时相关
admin (3)show_news_feed=0、show_version_footer=0、show_version_login=0后台是否显示新闻源/版本号(生产建议保持关版本外露)
defaultwebsrverrhandler (5)enabled=0 + err401/403/404/500全局错误页

六、生产配置模板

适用场景:单台 16GB 内存 / NVMe SSD 的 Debian 12(bookworm)真机、对外提供 Web+邮件托管、Apache 2.4。以下为相对出厂值的建议改项(值为推荐口径,改法用 3.1 GUI 或 3.2 SQL 均可;改完跑一次 froxlor:cron 'tasks' -f 落盘):

参数建议值理由
system.use_ssl1面板强制 HTTPS(先备好证书或启用 LE)
system.leenabled + le_domain_dnscheck1 + 1站点证书自动签发/续期
system.distributionbookworm与真机一致,消掉 distro_mismatch
phpfpm.enabled1客户站点进程级隔离(多租户必开)
panel.password_min_length8;numeric/special_char_required 置 1出厂口令策略几乎不设防(5.6 实测 min_length=0)
session.sessiontimeout300默认 600s 偏长
api.enabled按需 1,密钥仅发对接主机开通自动化;默认 0 最安全
admin.show_version_footer / show_version_login0(出厂已 0)版本信息不外露,防定向攻击
system.report_enable / report_webmax / report_trafficmax1 / 80 / 80用量告警提前量
system.mail_quota_enabled + mail_quota1 / 按套餐邮箱配额管控
system.send_cron_errors1任务失败邮件告警(配合 panel.adminmail)
system.debug_cron0生产别刷 syslog
logger.logtypessyslog,mysql(出厂)双写保留审计

⚠️ 注意:system.croncmdline、system.apacheconf_* 这类路径参数不要凭想象改——必须与真机实际布局一致(本演示环境 /usr/bin/php 缺失导致整条 cron 链失败的教训见部署篇 11.3);改路径类参数后务必手动跑一次 froxlor:cron 'tasks' -f -d 验证渲染与重载成功。

七、常见问题

7.1 想查"分组字典表",报 Table 'froxlor.panel_settinggroups' doesn't exist

现象(实测踩坑原样):

SELECT groupid, settinggroup, description FROM panel_settinggroups ORDER BY groupid;
ERROR 1146 (42S02) at line 1: Table 'froxlor.panel_settinggroups' doesn't exist

按 panel_settings_groups 猜同样报错。定位:2.3.16 里 %setting% 匹配的表实测只有 panel_settings 与 domain_ssl_settings 两张,不存在分组字典表——分组名硬编码在代码与各 varname 的元数据里,settinggroup 列就是分组本身。解决:看分组分布直接用 GROUP BY settinggroup COUNT(*)(4.1 实测),分组含义对照本文第五章。

7.2 SQL 直改 panel.paging 实测闭环

3.2 节演示了 20 → 25(UPDATE 后 SELECT 立即回显 25)。收尾必须改回:

mysql -h db -u froxroot -pq1w2e3r4 froxlor -e \
  "UPDATE panel_settings SET value='20' WHERE settinggroup='panel' AND varname='paging'"
mysql -h db -u froxroot -pq1w2e3r4 froxlor -e \
  "SELECT varname, value FROM panel_settings WHERE varname='paging'"
varname	value
paging	20

要点:SQL 改值后GUI 分组页同步显示新值(同一张表),列表分页立即按新值走;不存在"要重启面板"的问题,但 GUI 里改过未保存的表单会把你的 SQL 值盖回去,两条路别并行用。

7.3 distro_mismatch=1 是怎么回事

实测本环境 system.distribution=bookworm、system.distro_mismatch=1(SQL 回显见 3.2 末与部署篇基底说明):安装选了 bookworm 模板线,而运行基底的真实发行版是 Debian 13。面板启动时自检 OS 版本并记账,不改变行为(配置仍按所选模板渲染)。处理二选一:把 system.distribution 改成实际代号(trixie 在支持清单内,froxlor:config-diff -l 实测可见);或维持 bookworm 并知晓差异范围——用 froxlor:config-diff bookworm trixie 可逐文件量化(实测差异集中在 proftpd 模块表,回显见 CLI 篇 config-diff 一节)。

7.4 GUI 设置页看不到某些参数

原因:panel.settings_mode=0(简单模式)+ system.hide_incompatible_settings=1 会隐藏与当前 Web 服务器/PHP 模式不兼容或非常用的参数(例如 nginx.*、mod_fcgid_* 在 Apache+mod_php 环境不可见)。解决:切专家模式,或按 3.2 直接 SQL 读写——参数在不在 panel_settings 表里与 GUI 显不显示无关(4.1 的 276 行全量包含所有隐藏项)。

7.5 改了 vhost 相关参数,站点没变化

定位:这类参数只写库,落盘靠任务队列。验证链:SELECT value FROM panel_settings WHERE varname='last_tasks_run' 看最近任务时刻 → 手动 php /var/www/html/froxlor/bin/froxlor-cli froxlor:cron 'tasks' -f -d(全量回显见部署篇 4.11)→ 检查生成的 vhost 文件与 Web 服务重载日志。

八、参考链接