Dolibarr 24.0 配置参数详解

Dolibarr 24.0.2 双层配置体系实测详解:conf.php 30 余键(站点路径/数据库/认证/安全/运行行为)与 llx_const 数据库常量逐项说明,含 prod 错误页、force_https 302、语言切换、db_pass dolcrypt 加解密等改值验证回滚实录与生产配置模板。

DolibarrDolibarrERP2026/10/23

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';

二、前置条件

  1. 已按安装指南完成 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
  1. 能用命令行编辑配置文件、能连数据库执行 SQL(本文用 mariadb 命令行演示)。
  2. 改配置前先备份 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_INSTALL24.0.2内部:安装版本号(visible=0)
MAIN_VERSION_LAST_UPGRADE(升级后写入)内部:升级后版本号
MAIN_LANG_DEFAULTen_US默认语言
MAIN_INFO_SOCIETE_NOM(公司名)公司信息
MAIN_MAIL_EMAIL_FROMrobot@domain.com邮件发件人
MAIN_UPLOAD_DOC2048上传上限(KB)
CRON_KEYcronkey-q1w2e3r4计划任务密钥
SYSLOG_FILEDOL_DATA_ROOT/dolibarr.log日志文件路径

关键差异解读:conf.php 管"环境与安全"(改文件),llx_const 管"业务与行为"(改界面或 SQL),两层不可互相替代——数据库口令放 llx_const 没有意义(应用先连库才读到它),默认语言写进 conf.php 也不会生效。

五、核心参数分类详解

5.1 站点与路径类(5 键)

这 5 个键决定 Dolibarr 的"坐标系",向导按安装时输入生成,搬家/换域名时必改:

键实测值作用与改法
$dolibarr_main_url_roothttp://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_hostlocalhost主机名或 IP;mysqli 驱动下 localhost 走 socket、127.0.0.1 走 TCP
$dolibarr_main_db_port3306端口
$dolibarr_main_db_namedolibarr库名
$dolibarr_main_db_userdolibarr账号
$dolibarr_main_db_passq1w2e3r4密码,支持两种形态:明文 / dolcrypt:AES-256-CTR:... 加密串(见下方实测)
$dolibarr_main_db_typemysqlimysqli 或 pgsql
$dolibarr_main_db_prefixllx_表前缀,安装后不可改(400+ 张表名字都带着它)
$dolibarr_main_db_character_setutf8字符集(向导对 MariaDB 实测生成 utf8)
$dolibarr_main_db_collationutf8_unicode_ci排序规则
$dolibarr_main_db_readonly0(示例默认)连接只读化;报表专用从库场景使用

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 决定"用户口令在哪验证",支持逗号分隔多级回退(官方示例):

取值验证位置适用场景
dolibarrDolibarr 自己的用户表(llx_user)默认,单系统独立管理
ldapLDAP 服务器统一身份源
ldap,dolibarr先 LDAP,失败回退应用口令过渡期/混合
httpHTTP Basic(Web 服务器层)反代/网关已做认证
forceuser固定 $dolibarr_auto_user 指定账号内网免登录面板
twofactor应用口令 + TOTP(需外部模块)双因子
openid_connect / googleoauthOAuth2 身份源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_idb03bf0f45e49...2765c(64 位十六进制)实例唯一密钥:会话命名、dolcrypt 加解密派生都用它,每实例必须唯一且不外泄
$dolibarr_main_distribstandard发行形态标识,官方包固定 standard
$dolibarr_cron_allow_cli0(示例默认)允许命令行直接触发计划任务;配系统 crontab 时置 1
$dolibarr_mailing_limit_sendbyweb0(向导生成)Web 方式群发每批上限,0 不限
$dolibarr_mailing_limit_sendbycli0(向导生成)CLI 方式群发每批上限
$dolibarr_website_allow_custom_php0(示例默认)网站模块自定义 PHP,安全敏感,无必要不开
$dolibarr_allow_download_external_modules0(示例默认)界面下载外部模块开关
$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';"

八、参考链接