Dolibarr 24.0 配置参数详解
Dolibarr 24.0.2 双层配置体系实测详解:conf.php 30 余键(站点路径/数据库/认证/安全/运行行为)与 llx_const 数据库常量逐项说明,含 prod 错误页、force_https 302、语言切换、db_pass dolcrypt 加解密等改值验证回滚实录与生产配置模板。
Dolibarr 24.0 配置参数详解
目标:讲透 Dolibarr 24.0.2 的双层配置体系——服务端配置文件
conf.php(路径、数据库、认证、安全、运行行为共 30 余键)与数据库配置表llx_const(界面可见的 200 余条运行常量),每一类参数都给出实测验证(改值 → 验证 → 回滚)与生产配置模板。已在 Ubuntu 22.04.5 LTS + LAMP 实测服务器(PHP 8.1.2、MariaDB 10.6.23、Dolibarr 24.0.2)逐项验证。
一、环境信息
- 操作系统:Ubuntu 22.04.5 LTS(x86_64)
- Dolibarr:24.0.2(官方 tar.gz 源码包安装,安装全流程见本站 《Ubuntu 22.04 安装 Dolibarr 24.0 指南》)
- PHP:8.1.2-1ubuntu2.28(Apache mod_php 模块方式运行)
- Apache:2.4.52;MariaDB:10.6.23
- 程序根:
/var/www/dolibarr/htdocs - 数据根:
/var/www/dolibarr/documents(含install.lock) - 配置文件:
/var/www/dolibarr/htdocs/conf/conf.php(安装向导生成) - 数据库配置表:
llx_const(实测 214 条常量,分布 2 个 entity)
安装向导生成的 conf.php 实测全文(本文所有改值实验都在这份文件上进行):
<?php
//
// File generated by Dolibarr installer 24.0.2 on Oct 22, 2026
//
// Take a look at conf.php.example file for an example of conf.php file
// and explanations for all possibles parameters.
//
$dolibarr_main_url_root='http://localhost';
$dolibarr_main_document_root="/var/www/dolibarr/htdocs";
$dolibarr_main_url_root_alt='/custom';
$dolibarr_main_document_root_alt="/var/www/dolibarr/htdocs/custom";
$dolibarr_main_data_root="/var/www/dolibarr/documents";
$dolibarr_main_db_host='localhost';
$dolibarr_main_db_port='3306';
$dolibarr_main_db_name='dolibarr';
$dolibarr_main_db_prefix='llx_';
$dolibarr_main_db_user='dolibarr';
$dolibarr_main_db_pass='q1w2e3r4';
$dolibarr_main_db_type='mysqli';
$dolibarr_main_db_character_set='utf8';
$dolibarr_main_db_collation='utf8_unicode_ci';
// Authentication settings
$dolibarr_main_authentication='dolibarr';
//$dolibarr_main_demo='autologin,autopass';
// Security settings
$dolibarr_main_prod='0';
$dolibarr_main_force_https='0';
$dolibarr_main_restrict_os_commands='mariadb-dump, mariadb, mysqldump, mysql, pg_dump, pg_restore, clamdscan, clamdscan.exe, ls, tar, gzip, bzip2, zstd';
$dolibarr_main_restrict_eval_methods='getDolGlobalString, getDolGlobalInt, getDolCurrency, getDolEntity, getDolDBType, fetchNoCompute, hasRight, isAdmin, isModEnabled, isStringVarMatching, dolSort, abs, min, max, round, dol_now, preg_match';
$dolibarr_nocsrfcheck='0';
$dolibarr_main_instance_unique_id='b03bf0f45e49adb2bf1f8aadd23265944b20dae2fbc0c9848941be5a6242765c';
$dolibarr_mailing_limit_sendbyweb='0';
$dolibarr_mailing_limit_sendbycli='0';
//$dolibarr_lib_FPDF_PATH="";
//$dolibarr_lib_TCPDF_PATH="";
//$dolibarr_lib_FPDI_PATH="";
//$dolibarr_lib_TCPDI_PATH="";
//$dolibarr_lib_GEOIP_PATH="";
//$dolibarr_lib_NUSOAP_PATH="";
//$dolibarr_lib_ODTPHP_PATH="";
//$dolibarr_lib_ODTPHP_PATHTOPCLZIP="";
//$dolibarr_js_CKEDITOR='';
//$dolibarr_js_JQUERY='';
//$dolibarr_js_JQUERY_UI='';
//$dolibarr_font_DOL_DEFAULT_TTF='';
//$dolibarr_font_DOL_DEFAULT_TTF_BOLD='';
$dolibarr_main_distrib='standard';
二、前置条件
- 已按安装指南完成 Dolibarr 24.0 的安装与初始化(
install.lock已生成、能正常登录后台)。本文实验环境实测:
ls /var/www/dolibarr/documents/install.lock
ls -l /var/www/dolibarr/htdocs/conf/
实测输出:
/var/www/dolibarr/documents/install.lock
total 28
-rw-r--r-- 1 www-data www-data 2082 Oct 22 21:14 conf.php
-rw-r--r-- 1 www-data www-data 23298 Oct 2 12:03 conf.php.example
-r-------- 1 www-data www-data 0 Oct 22 21:14 conf.php.old
- 能用命令行编辑配置文件、能连数据库执行 SQL(本文用
mariadb命令行演示)。 - 改配置前先备份
conf.php(本文实验即采用此法回滚):
cp /var/www/dolibarr/htdocs/conf/conf.php /tmp/conf.php.bak
三、参数查看与修改方式
3.1 conf.php:服务端配置文件
conf.php 是 Dolibarr 唯一的文件态配置,负责"应用如何连接环境":站点地址、程序/数据目录、数据库凭据、认证方式、安全开关。框架加载入口在 htdocs/filefunc.inc.php,实测:
grep -n "conffile" /var/www/dolibarr/htdocs/filefunc.inc.php | head -5
实测输出:
122:$conffile = "conf/conf.php";
123:$conffiletoshow = "htdocs/conf/conf.php";
125://$conffile = "/etc/dolibarr/conf.php";
126://$conffiletoshow = "/etc/dolibarr/conf.php";
输出解读:默认加载相对程序根的 conf/conf.php;官方预留了把配置挪到 /etc/dolibarr/conf.php 的能力(125 行注释态),需要"配置与代码分离"时取消注释即可。
文件权限要求:向导生成后为 644(见 3.1 开头 ls 实测),生产建议收紧为 640 且属主 root:www-data——conf.php 里有数据库明文或加密口令,Web 运行用户只需可读。
3.2 llx_const:数据库配置表
界面「设置 → 系统 → 常规配置」里的所有开关,实际都写进数据库表 llx_const。表结构实测:
mariadb -udolibarr -pq1w2e3r4 dolibarr -e "SHOW COLUMNS FROM llx_const;"
实测输出:
Field Type Null Key Default Extra
rowid int(11) NO PRI NULL auto_increment
name varchar(180) NO MUL NULL
entity int(11) NO 1
value text NO NULL
type varchar(64) YES string
visible tinyint(4) NO 1
note text YES NULL
tms timestamp NO current_timestamp() on update current_timestamp()
mariadb -udolibarr -pq1w2e3r4 dolibarr -e "SELECT COUNT(*) AS const_total, COUNT(DISTINCT entity) AS entities FROM llx_const;"
实测输出:
const_total entities
214 2
字段解读:entity 是多公司(多实体)维度——entity=0 为全局配置,entity=1 起为各公司独立配置;visible=0 的常量不在界面显示(内部状态,如安装版本号);tms 记录最后修改时间。
3.3 修改生效规则与验证方法
conf.php:PHP 进程每次请求都会重新读取,保存即生效,无需重启 Apache;llx_const:Dolibarr 每次请求会把常量加载进内存,SQL 改完刷新页面即生效,无需重启任何服务。
用语言常量 MAIN_LANG_DEFAULT 做一次完整闭环实测(改值 → 验证 → 回滚)。登录页标题随语言常量变化:
mariadb -udolibarr -pq1w2e3r4 dolibarr -e "UPDATE llx_const SET value='zh_CN' WHERE name='MAIN_LANG_DEFAULT';"
curl -s http://localhost/ | grep -oE '<title>[^<]*</title>'
实测输出:
<title>登陆 @ 24.0.2</title>
回滚为英文并复核:
mariadb -udolibarr -pq1w2e3r4 dolibarr -e "UPDATE llx_const SET value='en_US' WHERE name='MAIN_LANG_DEFAULT';"
curl -s http://localhost/ | grep -oE '<title>[^<]*</title>'
实测输出:
<title>Login @ 24.0.2</title>
结论:数据库配置改完即时生效(标题从英文变为中文再复原),无需重启任何进程。
四、参数总览
4.1 conf.php 全键清单
conf.php 可用键以随包发布的 conf.php.example(23298 字节)为准,按功能分组如下("生成"列标注安装向导是否默认写入):
| 分组 | 键 | 向导生成 | 说明 |
|---|---|---|---|
| 站点与路径 | dolibarr_main_url_root | ✅ | 对外访问根地址 |
| 站点与路径 | dolibarr_main_document_root | ✅ | 程序根目录 |
| 站点与路径 | dolibarr_main_url_root_alt | ✅ | 外部模块的 URL 前缀(可逗号分隔多个) |
| 站点与路径 | dolibarr_main_document_root_alt | ✅ | 外部模块目录(可逗号分隔多个) |
| 站点与路径 | dolibarr_main_data_root | ✅ | 数据根目录(上传/生成文件) |
| 数据库 | dolibarr_main_db_host | ✅ | 数据库主机 |
| 数据库 | dolibarr_main_db_port | ✅ | 数据库端口 |
| 数据库 | dolibarr_main_db_name | ✅ | 数据库名 |
| 数据库 | dolibarr_main_db_prefix | ✅ | 表前缀(默认 llx_,向导写入) |
| 数据库 | dolibarr_main_db_user / dolibarr_main_db_pass | ✅ | 连库账号/密码 |
| 数据库 | dolibarr_main_db_type | ✅ | 驱动:mysqli / pgsql |
| 数据库 | dolibarr_main_db_character_set / dolibarr_main_db_collation | ✅ | 字符集/排序规则 |
| 数据库 | dolibarr_main_db_readonly | ❌ | 只读库开关(默认 0) |
| 数据库 | dolibarr_main_dolcrypt_key | ❌ | dolcrypt 加密密钥(加密 db_pass 等场景) |
| 认证 | dolibarr_main_authentication | ✅ | 认证方式,可逗号分隔多级回退 |
| 认证 | dolibarr_main_authentication_autocreateuser | ❌ | 外部认证自动建用户(默认 0) |
| 认证 | dolibarr_main_auth_ldap_host/port/version/servertype/login_attribute/dn/admin_login/admin_pass/debug | ❌ | LDAP 认证 9 键 |
| 认证 | dolibarr_main_demo | ❌ | 演示自动登录(仅测试环境) |
| 安全 | dolibarr_main_prod | ✅ | 生产模式开关 |
| 安全 | dolibarr_main_force_https | ✅ | 强制 HTTPS |
| 安全 | dolibarr_main_restrict_os_commands | ✅ | 允许调用的系统命令白名单 |
| 安全 | dolibarr_main_restrict_eval_methods | ✅ | 动态求值允许的方法白名单 |
| 安全 | dolibarr_main_restrict_ip | ❌ | 后台访问 IP 白名单 |
| 安全 | dolibarr_nocsrfcheck | ❌ | CSRF 校验开关(默认 0,禁改 1) |
| 安全 | dolibarr_login_badcharunauthorized | ❌ | 登录名禁用字符 |
| 安全 | dolibarr_main_limit_users | ❌ | 用户数上限(0 不限) |
| 安全 | dolibarr_strict_mode | ❌ | 严格模式(密码复杂度等更严) |
| 运行行为 | dolibarr_main_instance_unique_id | ✅ | 实例唯一密钥 |
| 运行行为 | dolibarr_main_distrib | ✅ | 发行形态标识(standard) |
| 运行行为 | dolibarr_cron_allow_cli | ❌ | 允许命令行触发计划任务(默认 0) |
| 运行行为 | dolibarr_mailing_limit_sendbyweb / sendbycli | ✅ | 群发邮件每批上限(web/cli) |
| 运行行为 | dolibarr_website_allow_custom_php | ❌ | 网站模块允许自定义 PHP(默认 0) |
| 运行行为 | dolibarr_allow_download_external_modules | ❌ | 允许下载外部模块(默认 0) |
| 运行行为 | dolibarr_api_count_always_enabled | ❌ | API 探针常开(默认关) |
| 扩展库路径 | dolibarr_lib_FPDF_PATH 等 8 键、dolibarr_js_* 3 键、dolibarr_font_* 2 键 | ❌ | 第三方库/字体路径覆盖 |
4.2 llx_const 常用键速查
| 键名 | 实测值 | 归属界面位置 |
|---|---|---|
MAIN_VERSION_LAST_INSTALL | 24.0.2 | 内部:安装版本号(visible=0) |
MAIN_VERSION_LAST_UPGRADE | (升级后写入) | 内部:升级后版本号 |
MAIN_LANG_DEFAULT | en_US | 默认语言 |
MAIN_INFO_SOCIETE_NOM | (公司名) | 公司信息 |
MAIN_MAIL_EMAIL_FROM | robot@domain.com | 邮件发件人 |
MAIN_UPLOAD_DOC | 2048 | 上传上限(KB) |
CRON_KEY | cronkey-q1w2e3r4 | 计划任务密钥 |
SYSLOG_FILE | DOL_DATA_ROOT/dolibarr.log | 日志文件路径 |
关键差异解读:conf.php 管"环境与安全"(改文件),llx_const 管"业务与行为"(改界面或 SQL),两层不可互相替代——数据库口令放 llx_const 没有意义(应用先连库才读到它),默认语言写进 conf.php 也不会生效。
五、核心参数分类详解
5.1 站点与路径类(5 键)
这 5 个键决定 Dolibarr 的"坐标系",向导按安装时输入生成,搬家/换域名时必改:
| 键 | 实测值 | 作用与改法 |
|---|---|---|
$dolibarr_main_url_root | http://localhost | 浏览器访问根地址,邮件里的链接、跳转都基于它。换域名/IP/端口时改它,末尾不带斜杠 |
$dolibarr_main_document_root | /var/www/dolibarr/htdocs | 程序文件根,随安装位置固定,升级时保持不变 |
$dolibarr_main_url_root_alt | /custom | 外部模块 URL 前缀,多模块目录时逗号分隔:/ext1,/ext2 |
$dolibarr_main_document_root_alt | /var/www/dolibarr/htdocs/custom | 外部模块目录,与上键一一对应;目录不存在时忽略 |
$dolibarr_main_data_root | /var/www/dolibarr/documents | 上传文档、生成 PDF、备份的落盘根,迁移服务器时必须整体搬走 |
验证方法:改 $dolibarr_main_url_root 为带端口的地址后,登录页生成的表单 action 与页面内链接会随之变化;改 $dolibarr_main_data_root 指向不存在目录,则后台「上传文件」功能立即报错——两处都属于"改错马上可见"的参数,生产变更前务必备份。
5.2 数据库类(10 键)
| 键 | 实测值 | 说明 |
|---|---|---|
$dolibarr_main_db_host | localhost | 主机名或 IP;mysqli 驱动下 localhost 走 socket、127.0.0.1 走 TCP |
$dolibarr_main_db_port | 3306 | 端口 |
$dolibarr_main_db_name | dolibarr | 库名 |
$dolibarr_main_db_user | dolibarr | 账号 |
$dolibarr_main_db_pass | q1w2e3r4 | 密码,支持两种形态:明文 / dolcrypt:AES-256-CTR:... 加密串(见下方实测) |
$dolibarr_main_db_type | mysqli | mysqli 或 pgsql |
$dolibarr_main_db_prefix | llx_ | 表前缀,安装后不可改(400+ 张表名字都带着它) |
$dolibarr_main_db_character_set | utf8 | 字符集(向导对 MariaDB 实测生成 utf8) |
$dolibarr_main_db_collation | utf8_unicode_ci | 排序规则 |
$dolibarr_main_db_readonly | 0(示例默认) | 连接只读化;报表专用从库场景使用 |
db_pass 加密形态实测:conf.php 的口令支持 dolcrypt:AES-256-CTR:<iv>:<密文> 格式,加密与解密由随包发布的官方脚本 scripts/admin/admintool.php 完成。实测闭环:
# 1) 明文状态(安装向导默认)
grep "db_pass" /var/www/dolibarr/htdocs/conf/conf.php
实测输出:
$dolibarr_main_db_pass='q1w2e3r4';
# 2) 执行加密
php /var/www/dolibarr/scripts/admin/admintool.php encodepass q1w2e3r4
grep "db_pass" /var/www/dolibarr/htdocs/conf/conf.php
curl -s http://localhost/ | grep -oE '<title>[^<]*</title>'
实测输出:
1
$dolibarr_main_db_pass='dolcrypt:AES-256-CTR:1e9239815570d012:07S6EYuIwk4=';
<title>Login @ 24.0.2</title>
输出解读:encodepass 返回 1 表示加密并回写成功,db_pass 变成 dolcrypt:AES-256-CTR:... 格式,且应用照常登录——加密对业务完全透明。
# 3) 解密还原(如需手工编辑口令)
php /var/www/dolibarr/scripts/admin/admintool.php decodepass
grep "db_pass" /var/www/dolibarr/htdocs/conf/conf.php
实测输出:
1
$dolibarr_main_db_pass='q1w2e3r4';
⚠️ 注意:
dolcrypt加密依赖$dolibarr_main_instance_unique_id参与派生,备份 conf.php 时密文与 instance_unique_id 必须一起备份,只抄密文到新实例是解不开的。
连库失败的真实报错(排障参照):把 $dolibarr_main_db_pass 改错后访问站点(prod='0' 时):
Dolibarr has detected a technical error.<br>
This information can be useful for diagnostic purposes (you can set option $dolibarr_main_prod to '1' to hide sensitive information):<br>
<b>Date:</b> 20261023004156<br>
<b>Dolibarr:</b> 24.0.2 - https://www.dolibarr.org<br>
<b>PHP:</b> 8.1.2-1ubuntu2.28<br>
<b>Server:</b> Apache/2.4.52 (Ubuntu)<br>
<b>Message:</b> host=localhost, port=3306, user=dolibarr, databasename=dolibarr, Failed to connect
输出节选(实测):完整页还包含 OS、User Agent、最近一次 SQL 请求等诊断字段,此处截取关键行。页面本身已给出提示:把
prod设为'1'可隐藏敏感信息。
5.3 认证类(11 键)
$dolibarr_main_authentication 决定"用户口令在哪验证",支持逗号分隔多级回退(官方示例):
| 取值 | 验证位置 | 适用场景 |
|---|---|---|
dolibarr | Dolibarr 自己的用户表(llx_user) | 默认,单系统独立管理 |
ldap | LDAP 服务器 | 统一身份源 |
ldap,dolibarr | 先 LDAP,失败回退应用口令 | 过渡期/混合 |
http | HTTP Basic(Web 服务器层) | 反代/网关已做认证 |
forceuser | 固定 $dolibarr_auto_user 指定账号 | 内网免登录面板 |
twofactor | 应用口令 + TOTP(需外部模块) | 双因子 |
openid_connect / googleoauth | OAuth2 身份源 | SSO |
配套键:$dolibarr_main_authentication_autocreateuser(外部认证首次登录自动建本地用户,默认 0);LDAP 细节由 dolibarr_main_auth_ldap_host/port/version/servertype/login_attribute/dn/admin_login/admin_pass/debug 9 键描述(仅 ldap 模式读取,键名即语义,默认值见 conf.php.example)。
💡 技术拓展:认证方式与授权模型是两件事——
authentication只解决"你是谁",登录后能做什么仍由 Dolibarr 内部角色/权限体系(llx_rights_def)决定。选http/openid_connect这类外部认证时,首次对接先用curl -I验证跳转与回调,再切autocreateuser,避免把自己锁在门外。
5.4 安全类(9 键)——重点实测
$dolibarr_main_prod(生产模式开关):'0' 时技术错误页输出完整诊断(数据库主机、账号、SQL、OS 信息),'1' 时只留一句话并提示去看日志。5.2 节已实测 prod='0' 的完整错误页;同一错误在 prod='1' 下的实测输出:
This website or feature is currently temporarily not available or failed after a technical error.<br><br>This may be due to a maintenance operation. Current status of operation (2026-10-23T00:42:13Z) are on next line...<br><br>
Dolibarr has detected a technical error. You can read log file or set option $dolibarr_main_prod to '0' in your config file to get more information.
结论:生产环境 prod 必须为 '1'——错误页不再泄露连库串等敏感信息,排障走日志(SYSLOG_FILE 指定的文件)。
$dolibarr_main_force_https(强制 HTTPS):'1' 时所有 HTTP 请求 302 跳 HTTPS。实测:
# conf.php 中 $dolibarr_main_force_https='1' 后
curl -sI http://localhost/ | head -4
实测输出:
HTTP/1.1 302 Found
Date: Fri, 23 Oct 2026 00:42:13 GMT
Server: Apache/2.4.52 (Ubuntu)
Location: https://localhost/
⚠️ 注意:开启前必须确认 HTTPS 站点本身可用(证书已配置),否则会造成"HTTP 跳 HTTPS、HTTPS 又打不开"的死循环。测试后已回滚为
'0'。
$dolibarr_main_restrict_os_commands(系统命令白名单):限定备份/杀毒等 OS 命令的执行范围,实测生成值为 mariadb-dump, mariadb, mysqldump, mysql, pg_dump, pg_restore, clamdscan, clamdscan.exe, ls, tar, gzip, bzip2, zstd。备份功能「管理工具 → 备份」调用的正是这份白名单里的命令;把 mariadb-dump 从白名单删掉,Web 界面备份随即不可用,但 CLI 备份不受影响。
$dolibarr_main_restrict_eval_methods(动态求值白名单):约束框架允许被动态调用的方法集合(实测生成值含 getDolGlobalString, getDolGlobalInt 等 18 个),是针对代码注入类漏洞的纵深防御,保持默认即可。
$dolibarr_main_restrict_ip(后台 IP 白名单):逗号分隔 IP/网段(示例格式 127.0.0.1, ::1, 192.168.0.0/24),命中白名单才允许访问;默认空 = 不限制。适合"后台只允许办公网访问"的场景,注意别把维护跳板机漏掉。
$dolibarr_nocsrfcheck:'0' 为启用 CSRF 校验(默认,实测生成值);'1' 关闭校验,仅在接口联调临时使用,用完改回。
$dolibarr_main_limit_users:用户数上限,0 不限;超限后新建用户被拒绝。开源版做用户数合规控制时可用。
$dolibarr_strict_mode:严格模式(口令策略等更严格),示例默认 0;启用后老弱口令用户会在下次改密时被要求加强。
$dolibarr_main_demo:演示自动登录(注释态),绝不可在生产启用。
5.5 运行行为类(8 键)
| 键 | 实测值 | 说明 |
|---|---|---|
$dolibarr_main_instance_unique_id | b03bf0f45e49...2765c(64 位十六进制) | 实例唯一密钥:会话命名、dolcrypt 加解密派生都用它,每实例必须唯一且不外泄 |
$dolibarr_main_distrib | standard | 发行形态标识,官方包固定 standard |
$dolibarr_cron_allow_cli | 0(示例默认) | 允许命令行直接触发计划任务;配系统 crontab 时置 1 |
$dolibarr_mailing_limit_sendbyweb | 0(向导生成) | Web 方式群发每批上限,0 不限 |
$dolibarr_mailing_limit_sendbycli | 0(向导生成) | CLI 方式群发每批上限 |
$dolibarr_website_allow_custom_php | 0(示例默认) | 网站模块自定义 PHP,安全敏感,无必要不开 |
$dolibarr_allow_download_external_modules | 0(示例默认) | 界面下载外部模块开关 |
$dolibarr_api_count_always_enabled | 关(示例默认) | API 探针常开,仅监控用途 |
💡 技术拓展:
mailing_limit_sendbyweb与sendbycli两个限流键对应两条群发通道——Web 界面群发走 PHP-FPM 进程,大批量容易超时,官方建议大列表走 CLI(mailing-send.php);两条通道分别限流互不影响。本文因未启用 Emailing 模块,两值保持向导默认0。
5.6 数据库配置(llx_const)核心键
以下键均为本环境实测值,可用 SQL 直接读写(等价于在管理界面操作):
MAIN_LANG_DEFAULT(默认语言):实测 en_US。改 zh_CN 后登录页标题变为「登陆 @ 24.0.2」(完整实测见 3.3 节)。可取值参考 htdocs/langs/ 目录下的语言代码。
MAIN_UPLOAD_DOC(单文件上传上限,单位 KB):实测 2048(即 2MB)。调大到 50MB:
mariadb -udolibarr -pq1w2e3r4 dolibarr -e "UPDATE llx_const SET value='51200' WHERE name='MAIN_UPLOAD_DOC'; SELECT name,value FROM llx_const WHERE name='MAIN_UPLOAD_DOC';"
实测输出:
name value
MAIN_UPLOAD_DOC 51200
⚠️ 注意:这是应用层上限,还要 PHP 层配合——
php.ini的upload_max_filesize/post_max_size至少不小于它,两层取交集。
MAIN_MAIL_EMAIL_FROM(系统邮件发件人):实测 robot@domain.com(向导占位值)。生产必须改成真实域名邮箱,否则外发邮件会被对方服务器拒收;改后用「设置 → 系统 → 邮件」的发送测试邮件功能验证。
MAIN_INFO_SOCIETE_NOM(公司名称):出现在界面标题、PDF 单据页眉。SQL 改法:
mariadb -udolibarr -pq1w2e3r4 dolibarr -e "UPDATE llx_const SET value='某某科技有限公司' WHERE name='MAIN_INFO_SOCIETE_NOM';"
CRON_KEY(计划任务密钥):实测 cronkey-q1w2e3r4,cron_run_jobs.php 的第一个参数必须与之一致,密钥不对时脚本拒绝执行计划任务、只回落打印用法行。
SYSLOG_FILE(日志文件路径):实测 DOL_DATA_ROOT/dolibarr.log,即 /var/www/dolibarr/documents/dolibarr.log。prod='1' 后排障全靠它,建议生产开启文件日志(「设置 → 系统 → 日志」里启用 SYSLOG_FILE 处理器)。
MAIN_VERSION_LAST_INSTALL / MAIN_VERSION_LAST_UPGRADE:内部版本戳(visible=0 不在界面显示),实测 24.0.2。升级脚本靠它判断迁移目标版本——手工改库时千万不要动这两个键。
六、生产配置模板
适用场景:8–16GB 内存、SSD 磁盘、10–50 内部用户的 ERP/CRM 常规负载。以下模板在实测环境验证过全部键位(演示口令按测试惯例使用 q1w2e3r4,生产请更换为强口令):
<?php
// ===== 站点与路径 =====
$dolibarr_main_url_root='https://erp.example.com'; // 对外域名,末尾无斜杠
$dolibarr_main_document_root='/var/www/dolibarr/htdocs';
$dolibarr_main_url_root_alt='/custom';
$dolibarr_main_document_root_alt='/var/www/dolibarr/htdocs/custom';
$dolibarr_main_data_root='/var/www/dolibarr/documents';
// ===== 数据库 =====
$dolibarr_main_db_host='127.0.0.1'; // 显式 TCP,便于数据库独立部署
$dolibarr_main_db_port='3306';
$dolibarr_main_db_name='dolibarr';
$dolibarr_main_db_prefix='llx_';
$dolibarr_main_db_user='dolibarr';
$dolibarr_main_db_pass='q1w2e3r4'; // 生产先用明文调试,再用 admintool encodepass 加密
$dolibarr_main_db_type='mysqli';
$dolibarr_main_db_character_set='utf8';
$dolibarr_main_db_collation='utf8_unicode_ci';
// ===== 认证 =====
$dolibarr_main_authentication='dolibarr'; // 有 LDAP/SSO 时改为 'ldap,dolibarr'
// ===== 安全(生产必备四项)=====
$dolibarr_main_prod='1'; // 隐藏错误页敏感信息
$dolibarr_main_force_https='1'; // 证书就绪后再开
$dolibarr_main_restrict_os_commands='mariadb-dump, mariadb, mysqldump, mysql, ls, tar, gzip, bzip2, zstd';
$dolibarr_main_restrict_eval_methods='getDolGlobalString, getDolGlobalInt, getDolCurrency, getDolEntity, getDolDBType, fetchNoCompute, hasRight, isAdmin, isModEnabled, isStringVarMatching, dolSort, abs, min, max, round, dol_now, preg_match';
$dolibarr_nocsrfcheck='0';
$dolibarr_main_restrict_ip='10.0.0.0/8'; // 按办公网段收紧
// ===== 运行行为 =====
$dolibarr_main_instance_unique_id='请保留安装向导生成的原值'; // 换实例才生成新的
$dolibarr_mailing_limit_sendbyweb='25';
$dolibarr_mailing_limit_sendbycli='0';
$dolibarr_cron_allow_cli='1'; // 使用系统 crontab 调度计划任务时开启
$dolibarr_main_distrib='standard';
模板要点解读:
prod='1' + force_https='1' + restrict_ip三件套是生产基线,顺序上先验证 HTTPS 可用再开跳转;db_pass上线流程:明文调试通过 →admintool.php encodepass <口令>加密回写 → 抽查登录正常 → 备份 conf.php(密文与 instance_unique_id 一起);mailing_limit_sendbyweb='25':Web 群发限到每批 25 封,大批量交给 CLI 通道,避免 PHP 进程被长任务占死;instance_unique_id模板里故意保留原值提醒——这是唯一"必须沿用旧值"的键。
七、常见问题
Q1:改了 conf.php 不生效?
三步排查:确认改的是 $conffile 实际指向的文件(grep -n "conffile" htdocs/filefunc.inc.php,默认 conf/conf.php,不是 conf.php.example 也不是 conf.php.old);确认文件语法没被改坏(php -l /var/www/dolibarr/htdocs/conf/conf.php 应输出 No syntax errors detected);浏览器强刷(配置改动即时生效,页面缓存会骗人)。
Q2:数据库配置(llx_const)改坏了,界面白屏/报错怎么救? 直接 SQL 改回即可(常量每次请求实时加载,无缓存)。例如语言改错代码导致界面异常:
mariadb -udolibarr -pq1w2e3r4 dolibarr -e "UPDATE llx_const SET value='en_US' WHERE name='MAIN_LANG_DEFAULT';"
本文 3.3 节的改值→验证→回滚闭环就是按这个方法完成的。若整表被误清,重装向导(删除 install.lock 后访问 /install/)可重建基线常量,但业务数据不会恢复——所以改 llx_const 前先 mariadb-dump 单表备份。
Q3:prod='1' 之后出了错只看到一句话,怎么排障?
错误页明说了:去读日志。日志文件由 SYSLOG_FILE 常量指定(实测 DOL_DATA_ROOT/dolibarr.log,即 documents/dolibarr.log);若日志为空,说明文件日志处理器没开,先在「设置 → 系统 → 日志」开启,或临时把 prod 改回 '0' 复现错误拿完整诊断页(本文 5.2/5.4 两节就是两次实测的对照)。
Q4:dolcrypt 加密的 db_pass 换服务器后失效?
正常现象。dolcrypt 密文的解密密钥参与自 $dolibarr_main_instance_unique_id(若配置了 $dolibarr_main_dolcrypt_key 还叠加该键),换实例/换 id 都解不开。迁移时把 conf.php 原样整体搬迁(含 id 与密文),或先 decodepass 还原明文再迁移。
Q5:force_https='1' 后整站打不开了?
HTTPS 站点未就绪造成跳转死锁。救急:编辑 conf.php 把 $dolibarr_main_force_https 改回 '0'(保存即生效,无需重启),先把服务恢复,再按"证书部署 → curl 验证 HTTPS 200 → 再开跳转"的顺序重做。
Q6:MAIN_UPLOAD_DOC 调大了还是传不上去?
两层上限取交集:应用层 MAIN_UPLOAD_DOC(实测默认 2048 KB)与 PHP 层 upload_max_filesize/post_max_size。任一层偏小都按小的算,逐层检查:
php -i | grep -E "upload_max_filesize|post_max_size"
mariadb -udolibarr -pq1w2e3r4 dolibarr -e "SELECT value FROM llx_const WHERE name='MAIN_UPLOAD_DOC';"
八、参考链接
- Dolibarr 官方 Wiki 配置文档:https://wiki.dolibarr.org/index.php/Configuration
conf.php.example官方模板(随 tar.gz 包发布,键位最全):https://github.com/Dolibarr/dolibarr/blob/24.0.2/htdocs/conf/conf.php.example- 安全配置官方页:https://wiki.dolibarr.org/index.php/Security
- 本专栏相关篇目:
- 认知与选型:《Dolibarr 24.0 介绍与选型指南》
- 安装指南(conf.php 由安装向导生成):《Ubuntu 22.04 安装 Dolibarr 24.0 指南》