EasyWI 6.2.2 配置参数详解

EasyWI 6.2.2 全部配置入口详解:config.php 引导层、settings 单行宽表逐列、账号权限组、API 凭据与 IP 白名单、鉴权链 403 三连与 JSON 静默失败排障实录,全部实测回显。

EasyWIEasyWI面板MariaDBPHP 编程2026/11/02

EasyWI 6.2.2 配置参数详解

目标:把 EasyWI 6.2.2 面板的全部配置入口(stuff/config.php、settings 表、账号/权限表、API 配置表)逐项讲清并给出改法与验证。本文所有回显均来自 6.2.2 实装环境实测(Web 根 /var/www/html,PHP 7.4.33,MariaDB 10.11,查询/实测日期 2026-11-02);从零部署见 《EasyWI 6.2.2 Docker Compose 部署指南》。

一、环境信息

项目值
面板版本6.2.2(easywi_version 表实测,见 3.2 节)
Web 根目录/var/www/html
PHP7.4.33(cli,NTS)
数据库MariaDB 10.11,库 easywi,账号 easywi / q1w2e3r4
面板地址http://localhost:8138/(即 settings.paneldomain 实测值)
管理员账号admin / q1w2e3r4(accounttype=a)
API 用户apiuser / q1w2e3r4

二、前置条件

开始改配置前确认三件事,均可实测验证:

  1. 管理员会话可用(本文 curl 均复用该 cookie jar):
curl -s -c jar.txt "http://localhost:8138/login.php?gamestring=k27a906h3f8m"
curl -s -b jar.txt -c jar.txt -X POST http://localhost:8138/login.php -d "username=admin&password=q1w2e3r4" -w "http_code=%{http_code} redirect=%{redirect_url}\n"
http_code=302 redirect=http://localhost:8138/admin.php
  1. 数据库客户端可连:
mysql -ueasywi -pq1w2e3r4 easywi -e "SELECT 1;"
1
1
  1. install/ 目录已删除(否则 login.php/api.php 直接提示 Please remove the "install" folder)。

三、参数查看与修改方式

EasyWI 的配置分布在三个入口,改前先认清各自职责:

入口位置内容修改方式
站点引导配置/var/www/html/stuff/config.php数据库连接、captcha、debug、时区等安装向导生成,之后手工编辑
业务配置表数据库 settings 表(单行宽表)品牌、语言模板、安全、cron 健康、语音备份等后台 Admin→Settings 界面(推荐)或 SQL
功能域配置表api_settings、api_ips、usergroups、userdata 等API 凭据、IP 白名单、权限组、账号后台对应管理页

3.1 config.php(实测全文)

cat /var/www/html/stuff/config.php
<?php
// This file was generated by the easy-wi.com installer
$host = 'db';
$user = 'easywi';
$db = 'easywi';
$pwd = 'q1w2e3r4';
$captcha = '';
$title = 'Easy-Wi';
$debug = '0';
$timezone = 'Europe/Berlin';
$coloreddashboard = false;
$easywitweets = true;
$examplemodule = true;

该文件由安装向导写入,是面板唯一的"引导层":PDO 连接($host/$user/$db/$pwd)与站点级开关($captcha/$debug/$timezone 等)。改数据库口令必须同步改这里,否则面板全线白屏级报错。

3.2 settings 表(实测结构)

settings 不是键值对表,而是一行多列的宽表,一行即全站配置:

mysql -ueasywi -pq1w2e3r4 easywi -e "DESCRIBE settings;"
Field	Type	Null	Key	Default	Extra
id	int(10) unsigned	NO	PRI	NULL	auto_increment
version	varchar(10)	YES		6.1.5	
favicon	varchar(100)	YES		images/favicon.ico	
header_icon	varchar(100)	YES		logo_180px.png	
header_text	varchar(100)	YES		Easy-Wi	
header_href	varchar(100)	YES		https://easy-wi.com	
language	varchar(2)	NO			
template	varchar(50)	YES		default	
templateColor	varchar(50)	YES		blue	
imageserver	text	YES		NULL	
cronjob_ips	text	YES		NULL	
master	enum('Y','N')	NO		N	
voice_autobackup	enum('Y','N')	YES		Y	
voice_autobackup_intervall	smallint(5) unsigned	YES		5	
voice_maxbackup	smallint(5) unsigned	YES		5	
prefix1	enum('Y','N')	NO		Y	
prefix2	varchar(15)	NO			
faillogins	smallint(2) unsigned	NO		5	
brandname	varchar(50)	YES		NULL	
timezone	varchar(3)	YES		0	
supportnumber	varchar(100)	YES		NULL	
noservertag	smallint(1) unsigned	NO		1	
nopassword	smallint(1) unsigned	NO		1	
tohighslots	smallint(1) unsigned	NO		1	
paneldomain	varchar(255)	YES		NULL	
down_checks	smallint(5) unsigned	YES		2	
developer	enum('Y','N')	YES		N	
lastUpdateRun	smallint(2) unsigned	YES		NULL	
lastCronStatus	int(11) unsigned	YES		NULL	
lastCronWarnStatus	enum('Y','N')	NO		Y	
lastCronReboot	int(11) unsigned	YES		NULL	
lastCronWarnReboot	enum('Y','N')	NO		Y	
lastCronUpdates	int(11) unsigned	YES		NULL	
lastCronWarnUpdates	enum('Y','N')	NO		Y	
lastCronJobs	int(11) unsigned	YES		NULL	
lastCronWarnJobs	enum('Y','N')	NO		Y	
lastCronCloud	int(11) unsigned	YES		NULL	
lastCronWarnCloud	enum('Y','N')	NO		Y	
resellerid	int(10) unsigned	YES	MUL	0	
login_header_text	varchar(255)	YES		Easy-Wi	

输出节选说明:以上为全部 38 列的实测结构(DESCRIBE 原生回显)。列默认值即上游出厂值;当前行实际值见 3.3。

3.3 读取当前配置行

mysql -ueasywi -pq1w2e3r4 easywi -e "SELECT * FROM settings WHERE id=1\G"

输出节选(实测首尾):

*************************** 1. row ***************************
                        id: 1
                   version: 6.2.2
                   favicon: images/favicon.ico
               header_icon: logo_180px.png
               header_text: Easy-Wi
               header_href: https://easy-wi.com
                  language: en
                  template: default
             templateColor: blue
               imageserver: images.easy-wi.com::easy-wi
               cronjob_ips: 
                    master: N
          voice_autobackup: Y
voice_autobackup_intervall: 5
           voice_maxbackup: 5
                   prefix1: Y
                   prefix2: user
                faillogins: 5
                 brandname: quzuo.net
                  timezone: 0
             supportnumber: NULL
               noservertag: 1
                nopassword: 1
               tohighslots: 1
               paneldomain: http://localhost:8138/
               down_checks: 2
                 developer: N
             lastUpdateRun: 10
            lastCronStatus: 1793625081
        lastCronWarnStatus: Y
            lastCronReboot: 1793625062
        lastCronWarnReboot: Y
           lastCronUpdates: 1793625063
       lastCronWarnUpdates: Y
              lastCronJobs: 1793625467
          lastCronWarnJobs: Y
             lastCronCloud: 1793625059
         lastCronWarnCloud: Y
                resellerid: 0
         login_header_text: Easy-Wi

改配置优先走后台界面(Admin→Settings,实测 admin.php?w=sa 返回 200 24755),界面保存后回到这里 SELECT 复核落库值,是最可靠的验证闭环。

四、参数总览

分类关键参数入口
引导与调试$host/$user/$db/$pwd、$debug、$timezone、$captchaconfig.php
站点与品牌title、favicon、header_icon/text/href、brandname、paneldomain、login_header_text、templateColor、coloreddashboardconfig.php + settings
语言与模板language、template、imageserversettings
安全与账号faillogins、nopassword、noservertag、tohighslots、userdata.accounttype、usergroups.*settings + 表
cron 与监控cronjob_ips、lastCron*、lastCronWarn*、down_checks、lastUpdateRun、developer、versionsettings
语音服master、voice_autobackup(_intervall)、voice_maxbackup、prefix1/prefix2settings
APIapi_settings(user/salt/pwd/active)、api_ips(ip/resellerID)表 + 后台
分销resellerid(各表通用归属列)、easywitweets/examplemodulesettings/表/config.php

五、核心参数分类详解

5.1 引导与调试(config.php)

参数实测值说明与改动影响
$hostdb数据库主机名,按你的 DB 地址改
$user/$db/$pwdeasywi/easywi/q1w2e3r4PDO 凭据;口令改动必须与 DB 端同步
$captcha''空=登录无验证码;填 reCAPTCHA 私钥则启用
$titleEasy-Wi站点标题
$debug0生产保持 0;置 1 会放大 PHP 错误输出
$timezoneEurope/Berlin上游默认德国时区,国内部署建议改 Asia/Shanghai 并同步 php.ini
$coloreddashboardfalse首页彩色卡片
$easywitweetstrue拉取官方动态(内网部署建议 false)
$examplemoduletrue示例模块加载

验证方式:改后无需重启服务,刷新面板即生效;异常时看 Apache error 日志。

5.2 站点与品牌(settings)

参数实测值说明
faviconimages/favicon.ico图标相对路径
header_iconlogo_180px.png页头 logo
header_text / header_hrefEasy-Wi / https://easy-wi.com页头文字与其链接
brandnamequzuo.net品牌名(监控纠偏项之一:被改名会被自动纠正)
paneldomainhttp://localhost:8138/面板对外地址,换域名/上 HTTPS 必改,邮件与回调均引用它
login_header_textEasy-Wi登录页标题文字
templateColorblue模板配色

💡 说明:品牌三件套(brandname + 改名自动纠正)是 EasyWI 面向托管经营的差异化能力,选型背景见 《EasyWI 介绍与选型指南》 第四节。

5.3 语言与模板

  • language=en:界面语言,语言包为 XML(官方列英/丹/意/德四语)。
  • template=default:视图模板目录;README 明确"模块与视图分离、模板回退",定制模板缺失时自动回退 default。
  • imageserver=images.easy-wi.com::easy-wi:游戏图标等静态资源的上游资源服务器(host::path 格式);纯内网部署可自建静态资源站点后改此值。

5.4 安全与账号

settings 侧:

参数实测值说明
faillogins5连续失败次数上限
nopassword1弱口令策略开关
noservertag1服务器标签策略开关
tohighslots1超售槽位策略开关
supportnumberNULL客服号码展示位

账号与权限实测数据(userdata 仅一个 admin,节选):

mysql -ueasywi -pq1w2e3r4 easywi -e "SELECT * FROM userdata WHERE id=1\G"
                 id: 1
       creationTime: 2026-11-02 13:02:24
             active: Y
              cname: admin
           security: $2y$10$5gOuGL.V3SHmH8OUNFZIM.NdsuF8mqp.gddcOZ/bvR98E4VVzvw86
               mail: admin@example.com
          language: en
        accounttype: a
        resellerid: 0

security 列为 bcrypt($2y$10$ 前缀,cost=10)存储的管理员口令散列;accounttype 三值 a/r/u 对应 Admin/Reseller/User。

权限组实测(usergroups 表,安装即建三组):

mysql -ueasywi -pq1w2e3r4 easywi -e "SELECT id,name,grouptype,defaultgroup,root FROM usergroups;"
id	name	grouptype	defaultgroup	root
1	Admin Default	a	Y	Y
2	Reseller Default	r	Y	N
3	User Default	u	Y	N

usergroups 的权限是逐功能列开关(实测 id=1 行节选):root=Y、miniroot=N、settings=N、log=N、ipBans=N、updateEW=N、feeds=N、jobs=N、apiSettings=N、cms_settings=N、mysql=N、user=N、masterServer=N、gserver=N、addons=N、restart=N ……——即便 Admin Default 组,细粒度权限也默认关闭,按需逐项放开,属于默认最小权限设计。

5.5 cron 与监控健康

参数实测值说明
cronjob_ips(空)允许通过 HTTP 触发 cron 脚本的来源 IP 白名单;为空则 HTTP 触发一律被拒(见 7.3)
lastCronStatus/Reboot/Updates/Jobs/Cloud1793625081 / 1793625062 / 1793625063 / 1793625467 / 1793625059各 cron 最近一次运行时间戳
lastCronWarn*全 Y对应 cron 的健康告警位;后台首页四张状态卡即读这组值
down_checks2判定服务器离线前的连续探测次数
lastUpdateRun10更新检查运行时刻(分钟位)
developerNY 时走 developer build 更新线(当前稳定线 N)
version6.2.2面板数据版本

后台首页实测文本(admin.php?w=sa 页面提取):Cronjob: statuscheck.php、Cronjob: startupdates.php、Cronjob: jobs.php、Cronjob: cloud.php 四张健康卡——cron 脚本本身的命令行实测见《EasyWI 6.2.2 常用 CLI 命令与工具详解》篇。

5.6 语音服务器参数

参数实测值说明
masterN本面板是否为 TS3 master 节点
voice_autobackupY语音服配置自动备份开关
voice_autobackup_intervall5自动备份间隔(分钟)
voice_maxbackup5保留备份份数
prefix1Y虚拟服命名前缀开关一
prefix2user命名前缀二(拼接规则)

5.7 API 配置域(重点)

API 凭据存 api_settings(实测全行):

mysql -ueasywi -pq1w2e3r4 easywi -e "SELECT * FROM api_settings\G"
*************************** 1. row ***************************
resellerID: 0
    userID: NULL
    active: Y
      user: apiuser
      salt: f84775e4855b074790686e19be08445a
       pwd: 8667c31e0836727143e3070fcb9d4bcf1f52a87fe291b30a42793e3786dce4afeffac1441352fc3800e96dec2103c94468cff72995cf16eb59490a16da1d95cb

pwd 是 passwordhash(明文, salt) 的 128 位十六进制散列。口令验证实测(服务器本机):

php -r "include('/var/www/html/stuff/methods/functions.php'); echo passwordhash('q1w2e3r4','f84775e4855b074790686e19be08445a');"

输出与库中 pwd 完全一致 → apiuser 的 API 口令即 q1w2e3r4。

IP 白名单实测:

mysql -ueasywi -pq1w2e3r4 easywi -e "SELECT * FROM api_ips;"
ip	resellerID
10.89.65.1	0

鉴权链(源码归纳+实测):api.php 依次校验 ① 来源 IP ∈ api_ips → ② user/pwd 匹配 api_settings → ③ type ∈ {gserver,list,tsdns,mysql,user,voice,web} → ④ 业务参数走 json= 或 xml=(值为 base64;服务端 urldecode(base64_decode()) 后 json_decode/simplexml)。每一步失败都有专属 403 文案,三连实测:

curl -s -X POST http://localhost:8138/api.php -d "type=user"
403 Forbidden: No valid access data. No API user given. Request IP is: 10.89.65.1
curl -s -X POST http://localhost:8138/api.php -d "user=apiuser&pwd=wrongpass&type=user"
403 Forbidden: No valid api data Request IP is: 10.89.65.1
curl -s -X POST http://localhost:8138/api.php -d "user=apiuser&pwd=q1w2e3r4&type=user"
403 Forbidden: Neither POST value xml, nor JSON has been send!

三条 403 逐层验证了鉴权链。业务请求示例(实测,未注册任何游戏服时的响应骨架):

curl -s -X POST http://localhost:8138/api.php -d "user=apiuser&pwd=q1w2e3r4&type=gserver&action=ls&json=$(base64 -w0 <<< '{}')"
{"action":null,"private":"","active":"","identify_server_by":"","shorten":"","slots":"","server_external_id":"","server_local_id":"","identify_user_by":"","user_localid":"","user_externalid":"","username":"","errors":null}

type=list&action=ls 则实测返回 HTTP/1.1 200、Content-Length: 0(空响应体,列表数据源为空时的形态)。

⚠️ 注意(坑实录):json= 的值若被二次 urlencode(如某些客户端把 base64 里的 +/= 再编码一层),服务端解出来不是合法 JSON,报错文案为平台原文拼写:403 Forbidden: JSON not vaild。排障时先比对 base64 原文再查编码层。

六、生产配置模板

适用场景:面向公网的小型托管节点(2–4 核 / 4GB 内存 / SSD),PHP 7.4 一代。

stuff/config.php 建议值(相对实测环境的改动):

$captcha = '';            // 上 HTTPS 后建议接入 reCAPTCHA
$debug = '0';
$timezone = 'Asia/Shanghai';
$easywitweets = false;    // 内网/合规考虑不拉外部动态

settings 表建议改动(后台界面操作):paneldomain 改真实域名、brandname 改自有品牌、cronjob_ips 填 cron 触发机 IP、language 按用户群设置。

php.ini(easywi.ini)生产基线:

date.timezone = Asia/Shanghai
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 64M
post_max_size = 64M

七、常见问题

7.1 API 建用户:JSON 模式静默失败,XML 模式才报错

同一条 add 请求,JSON 载荷实测返回全 null 但库里没有新行:

{"action":null,"username":"apitest2","external_id":"apitest2@example.com","email":"apitest2@example.com","errors":"","password":"","active":"Y","localid":"0"}

(userdata 复查无 apitest2。)改用 XML 载荷,同一失败立刻显形:

<action>fail</action><actionSend>add</actionSend><username>apitest4</username>
<errors>Could not write user to database</errors><localid>0</localid>

定位过程(实测):手工执行同款 INSERT 直进 MariaDB 成功落库 → 差异在 PHP 层。源码 stuff/api/api_users.php 第 231 行 INSERT 后用 isid(lastInsertId(),10) 判定,假则走 273 行返回 Could not write user to database。双重坑:PDO 默认静默吞错 + JSON 响应分支不回显失败字段。结论:批量对接先小样本用 XML 模式验证,再切 JSON。

7.2 ls 动作输出混入 PHP Warning

实测 type=user&action=ls 曾返回:

[]<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /var/www/html/stuff/api/api_users.php:755) in <b>/var/www/html/stuff/api/api_users.php</b> on line <b>869</b><br />
{"action":null,"username":"","external_id":"","email":"","errors":"","password":"","active":"","localid":""}

定位:755 行在 header() 前产生了 echo(调试输出残留),导致 869 行发 JSON 头时 headers already sent,响应体被污染。处理:清除该文件多余输出后恢复正常 []。教训:API 响应体混 HTML 时先查 echo/warning,而不是查数据层。

7.3 浏览器打开 cron 脚本被拒

HTTP 访问 statuscheck.php 返回文本 Statuscheck can only be run via console or a cronjob;startupdates.php 的守卫(源码 78 行)要求 SERVER_ADDR 等于本机 IP 或 REMOTE_ADDR 命中 settings.cronjob_ips。需要 HTTP 触发时把来源 IP 加入 cronjob_ips,否则一律用命令行方式跑(见 CLI 篇)。

7.4 改完 settings 不生效

先确认改的是哪一层:品牌/语言/监控类在 settings 表(后台保存后 SELECT 复核,见 3.3);连接/captcha/debug 在 config.php(改文件即生效)。两层同名概念(如时区:$timezone vs settings.timezone)互不覆盖,排查时以 SELECT + cat 实测值为准。

八、参考链接

EasyWI 6.2.2 配置参数详解 - Quzuo