ClipBucket 配置参数详解
ClipBucket V5 三层配置体系实测详解:config.php 字段与 $config_overwrite、cb_config 全量默认值(上传/转码/邮件/代理/分区)、后台全量保存机制、cb_video_resolution 七档分辨率与配置排障五实录。
ClipBucket 配置参数详解
目标:讲清 ClipBucket V5(v5.5.3-#221)的完整配置体系——文件层(config.php / Nginx / PHP)、数据库层(cb_config 表)、后台面板三层的字段含义、默认值、实测修改方法与踩坑记录。所有默认值与修改结果均来自 2026-10-28 实测环境(部署过程见《ClipBucket Docker Compose 部署实战》),版本背景见《ClipBucket 介绍与选型指南》。
一、环境信息
- 应用版本:ClipBucket V5 v5.5.3-#221(cb_version 表实测记录:
version=5.5.3, revision=221) - 内置栈:Nginx 1.26.3 / PHP-FPM 8.5.12 / MariaDB 11.8.6 / FFmpeg 7.1.5 / ffprobe / MediaInfo
- 后台路径:
/admin_area/(示例账号admin/q1w2e3r4) - 配置取证方式:后台设置页源码解析 +
cb_config表直查 + 修改后落库复核
二、配置体系总览
V5 的配置分三层,修改优先级与作用域各不相同:
| 层 | 载体 | 作用 | 修改方式 |
|---|---|---|---|
| 文件层 | includes/config.php(数据库连接)、Nginx 站点配置、php.ini | 框架启动参数、Web/PHP 运行时限制 | 编辑文件后重载服务 |
| 数据库层 | cb_config 表(name/value 键值对,实测 360+ 行) | 全部站点行为参数(上传、转码、邮件、代理、分区开关等) | 后台面板(推荐)或 SQL |
| 覆盖层 | includes/config.php 内 $config_overwrite 数组 | 多服务器共用一个库时,覆盖 DB 值为本地值 | 编辑文件 |
加载顺序(includes/common.php 实测代码):config.php 存在则加载(新体系),否则回退 dbconnect.php(旧体系,v5.5.3 镜像内不存在该文件)。
三、文件层配置
3.1 includes/config.php(安装器生成,553 字节)
实测生成内容(脱敏结构):
<?php
//Database Host
$DBHOST = '127.0.0.1';
//Database Name
$DBNAME = 'clipbucket';
//Database Username
$DBUSER = 'clipbucket';
//Database Password
$DBPASS = 'q1w2e3r4';
//Database Port
$DBPORT = '3306';
//Setting Table Prefix
define('TABLE_PREFIX', 'cb_');
/*
* Enable this array to overwrite configurations over DB values
* This is usefull when you have multiple server working on a single DB with different server configurations
*
* $config_overwrite = [
* 'config_name' => 'config_value'
* ];
*/
要点:$config_overwrite 是官方提供的"文件级覆盖"机制——同一数据库支撑多台 Web 时,把机器差异(如 ffmpeg 路径)写进该数组即可,优先级高于 cb_config 表值。
3.2 Nginx 站点配置(官方镜像内置)
官方配置(镜像内 nginx-clipbucket.conf,/srv/http/clipbucket/upload 为站点根)关键项实测摘录:
client_max_body_size 2M;
location ~ ^/(includes|changelog|files/temp|cb_install)/ {
return 302 https://$host/403.php;
}
解读:上传体量被 Nginx 层硬限在 2MB(生产按需调大并同步 PHP 两项,见 3.3);includes/(源码)、changelog/、files/temp/(上传临时区)、cb_install/(安装器)禁止外部直访。实际验证:includes/config.php 无法从 Web 读取。
3.3 PHP 运行时限制(镜像实测 php -i)
| 指令 | 实测值 | 影响 |
|---|---|---|
upload_max_filesize | 2M | 单文件上限,与 Nginx 2M 叠加 |
post_max_size | 8M | 单请求上限 |
memory_limit | -1(不限制) | 转码/缩略图内存充裕 |
⚠️ 三道闸协同:Nginx
client_max_body_size→ PHPpost_max_size/upload_max_filesize→ 业务参数max_upload_size(cb_config,MB)。生产调大上传限额需三层同时改,取最小值生效。
四、数据库层:cb_config 与相关表
4.1 cb_config 表
结构极简:config_id / name / value。后台所有保存动作最终落到这张表;$config_overwrite 在运行期覆盖其值。
4.2 高频配置行清单(实测默认值)
站点与分区(setting_basic.php)
| name | 默认值 | 说明 |
|---|---|---|
| site_title / site_slogan | (空) | 站点标题/副标题,浏览器标题栏直接引用 |
| videosSection / channelsSection / collectionsSection / playlistsSection / photosSection | no | 分区总开关,默认全关;关闭时 watch_video.php 直接跳首页 |
| closed / closed_msg | no | 站点维护模式与提示语 |
| allow_registeration / activation | yes / 0 | 注册开关与激活方式 |
| videos_list_per_page / videos_items_ufav_page 等 | (分页数) | 各场景分页条数 |
| player_default_resolution / player_default_resolution_hls | (分辨率) | 播放器默认档位 |
| video_download / video_embed | (开关) | 下载/嵌入开关 |
| min_video_title / max_video_title | 1 / 1 | 标题长度上下限(字符),默认仅 1 字符——上传文件名转标题被截成首字的元凶,务必调大 |
| max_video_desc / min_video_desc | (长度) | 描述长度上下限 |
上传(setting_advanced.php)
| name | 默认值 | 说明 |
|---|---|---|
| enable_video_file_upload / enable_photo_file_upload | yes / yes | 视频与照片上传开关 |
| enable_chunk_upload | yes | 分片上传开关(前端上传组件强制走分片协议:chunk/chunks/name/unique_id) |
| chunk_upload_size | 2 | 分片大小(MB) |
| max_upload_size | 1000 | 单文件业务上限(MB)——实测本文改为 2000 |
| max_video_duration | 320 | 视频时长上限(秒)——实测本文改为 600 |
| cloudflare_upload_limit | 100 | CF 通道限制(MB) |
| allowed_video_types | wmv,avi,divx,3gp,mov,mpeg,mpg,xvid,flv,asf,rm,dat,mp4,mkv,webm,m4v,ts | 允许的扩展名清单 |
| delete_mass_upload | no | 批量上传后是否删除源文件 |
转码(setting_advanced.php + cb_video_resolution 表)
| name | 默认值 | 说明 |
|---|---|---|
| conversion_type | mp4 | 转码输出容器:mp4 或 hls(单选) |
| video_codec / audio_codec | libx264 / aac | 音视频编码器 |
| ffmpegpath / ffprobe_path | /usr/bin/ffmpeg / /usr/bin/ffprobe | 二进制路径 |
| max_conversion | 1 | 并发转码数 |
| allow_conversion_1_percent | yes | 1% 进度上报粒度 |
| only_keep_max_resolution | no | 是否只保留最高档输出 |
| (分辨率档位) | cb_video_resolution 表 7 行 | 240p(240kbps)/360p(400k)/480p(700k)/720p(2.5M)/1080p(4096k) 默认启用,1440p/2160p 默认停用;宽高与码率均为表内实值 |
💡 实测规律:转码只输出 不超过源片分辨率 的档位。实测 640×360 源片只产出 240p 与 360p 两个文件,虽然 480p/720p/1080p 都处于启用状态。
邮件(setting_advanced.php)
| name | 默认值 | 说明 |
|---|---|---|
| disable_email | no | 邮件总开关 |
| mail_type | mail(PHP 内置)/ smtp | |
| smtp_host / smtp_port / smtp_user / smtp_pass / smtp_auth | 空 / 0 / 空 / 空 / no | SMTP 五件套 |
| email_sender_name / email_sender_address | no-reply / no-reply@domain.com | 发件人展示 |
代理(setting_advanced.php,官方功能)
| name | 默认值 | 说明 |
|---|---|---|
| proxy_enable | no | 出网代理总开关 |
| proxy_url / proxy_port | 空 / 0 | 代理地址端口 |
| proxy_username / proxy_password / proxy_auth | 空 / 空 / no | 代理鉴权 |
实测该代理配置注入两条链路:版本检查用 file_get_contents 的 stream context(update.class.php:104),其余远程请求走 cURL——代理开启后安装期"打开 /cb_install/ 报 500"的问题即从根上解决(见第七节实录)。
五、后台面板操作要点
5.1 保存机制(实测)
后台两页(Basic / Advanced Configuration)的表单提交是全量字段保存:处理代码按固定字段清单遍历 $_POST(setting_advanced.php:183),因此不能只 POST 想改的几项——漏带的字段会被当空值处理。实测两次全量 POST(共 102 字段)保存后 cb_config 落库值逐项核对一致。
两类自动修正逻辑(源码口径):布尔型字段非 yes 一律归一为 no;数值型字段 ≤0 一律归 1。分辨率勾选(gen_240p ~ gen_2160p 七个复选框)走独立保存函数(saveVideoResolutions),落 cb_video_resolution 表。
5.2 实测修改演练
通过后台 Advanced Configuration 修改 5 项并保存,复核结果(cb_config 实测回显):
name value
max_upload_size 2000
max_video_duration 600
proxy_enable yes
proxy_port 7897
proxy_url 192.168.1.62
同一演练中把分区开关全部打开(Basic 页),保存后前台观看页立即从"跳转首页"恢复为 200 正常播放——分区开关的生效无需重启服务(PHP-FPM 不缓存配置表值)。
六、敏感与运维相关配置
| 配置点 | 位置 | 运维提示 |
|---|---|---|
| password_salt | cb_config(name=password_salt) | 密码哈希盐:登录哈希 = sha512(明文 + userid + salt);盐不可改(改则全站密码失效) |
| version | cb_version 表(version/revision) | 数据库结构版本(实测 5.5.3-221),升级系统据此决定是否跑迁移;与代码版本不一致时先走后台 upgrade_db.php |
| sitemetime / timezone | cb_config | 站点时区,影响日期显示与统计口径 |
| 匿名统计开关 | setting_basic 匿名使用统计 | 关闭后不回传使用数据 |
| 安装锁 | files/temp/install.me | 存在=可进安装器;删除即锁死 /cb_install/(实测删除后访问 302 回首页) |
七、配置排障实录
- watch 页跳首页:
videosSection=no所致。所有分区开关默认关闭,首次部署后必须先开视频分区(实测开启前 302,开启后 200)。 - 上传视频标题只有一个字:
max_video_title=1(默认)。上传接口用文件名去扩展名后按该上限截断(mb_substr),改成实际需要值(如 100)即可。 - 安装器/后台间歇 500:版本检查需出网(
update.class.php经file_get_contents+stream context 拉取 latest/changelog JSON)。无外网环境临时关allow_url_fopen;有代理则把proxy_enable/proxy_url/proxy_port配好(官方代理功能实测可用)。 - get_video 查视频返回空:
cb_version标称 5.5.3-221 但库中缺 tags 系列表(安装器导入链曾中断且不校验单条 SQL 失败)。用cb_install/sql/structure.sql(全表IF NOT EXISTS,幂等)重导补齐 122 张表后恢复。教训:版本行只表明"应达到"的结构,断链导入不回滚版本号。 - 表单保存后部分配置丢失:后台设置页必须整页提交(全字段遍历保存机制),用脚本/代理只回传部分字段会清掉其余项(见 5.1)。