SolidInvoice 3.1.2 配置参数详解

SolidInvoice 3.1.2 全量配置参数手册:run 进程参数、SOLIDINVOICE_* 环境变量、/etc/solidinvoice 加密配置目录、app_config 数据库设置四层体系逐项实测,含安装器参数与配置核查排障命令。

SolidInvoice发票管理PHP 应用自托管2026/10/24

SolidInvoice 3.1.2 配置参数详解

目标:把 SolidInvoice 3.1.2 的完整配置面讲清讲全——进程启动参数、环境变量、加密配置目录、数据库设置四层体系,逐项给出参数名、默认值、作用与实测验证方式。全文命令与回显均在 Ubuntu 22.04.4 LTS(x86_64)+ SolidInvoice 3.1.2 + MySQL 8.4 环境实测通过,实测日期 2026-10-24。部署过程与持久化目录规划见《SolidInvoice 3.1.2 Docker Compose 部署指南》,软件定位与技术架构见《SolidInvoice 3.1.2 介绍与选型指南》,API 集成与排障实战见《SolidInvoice 3.1.2 API 使用详解》。

一、环境信息

  • 操作系统:Ubuntu 22.04.4 LTS(x86_64)
  • SolidInvoice 版本:3.1.2(官方最新稳定版)
  • 数据库:MySQL 8.4(应用库名 solidinvoice)
  • 应用监听端口:8765(内置 Web 服务器固定端口),本机访问入口 http://127.0.0.1:8136
  • 配置目录:/etc/solidinvoice(自包含发行形态固定路径,必须持久化)
  • 演示账号:应用管理员 admin@example.com(演示环境测试口令)
  • 实测日期:2026-10-24(文中全部参数、回显均为当日实测,无转述)

二、配置体系总览

SolidInvoice 3.1.2 的配置分四层,职责与优先级如下:

层载体写入方式典型内容
1. 进程参数solidinvoice run <flags>启动命令行端口、域名、HTTPS 证书、metrics、worker 进程数
2. 环境变量SOLIDINVOICE_*systemd 单元文件 / 启动环境与进程参数等价的映射项 + 数据库/邮件/队列/检索连接 DSN
3. 配置目录/etc/solidinvoice 下的 secrets 加密文件安装器与控制台命令写入数据库连接、应用密钥、安装状态、语言、应用 URL
4. 数据库设置app_config 表管理界面「设置」页写入公司信息、邮件发件人、发票编号策略、提醒、水印

前两层是"启动形态"配置,第三层是"应用身世"配置,第四层是"业务偏好"配置。三层持久化配置的分工边界清晰:连数据库、定密钥这类启动前必须就位的配置走配置目录(加密落盘);公司抬头、发票前缀、提醒天数这类业务偏好走数据库设置(界面可改);端口、TLS、worker 数这类运行形态走进程参数或环境变量。

优先级关系(实测来源:官方发行文件 solidinvoice.env 头部注释原文):

# CLI flags always take precedence over values set here.

即进程参数 > 环境变量;而配置目录与数据库设置属于应用自身读取的持久化配置,与前两层不构成覆盖关系。

三、进程参数层:solidinvoice run

solidinvoice run 是自包含发行形态的唯一启动入口(部署篇 4.2 已用它启动应用)。全量参数以 solidinvoice run --help 实测输出为准(2026-10-24,应用服务器上执行):

Runs SolidInvoice

Usage:
  SolidInvoice run [flags]

Flags:
      --disable-https           Disable HTTPS. The application will only be accessible using http://. This setting is not recommended, unless you are setting up a reverse proxy which will handle https. Combine with --domain to specify the hostname Caddy should accept when behind a reverse proxy (e.g. --disable-https --domain solidinvoice.example.com)
      --domain string           The domain name to use for the application. When specifying a domain, an SSL certificate will automatically be generated for you
      --enable-metrics          Enable Prometheus metrics endpoint on a dedicated port. Exposes Caddy HTTP metrics and FrankenPHP worker/thread metrics for scraping
  -h, --help                    help for run
      --lets-encrypt            Enable Let's Encrypt for automatic SSL certificates (requires --domain)
      --log-format string       Log output format: 'json' for structured JSON logs, or 'console' (default) for human-readable console output (default "console")
      --messenger-workers int   Number of messenger worker processes to spawn. Each worker processes async messages independently. Set to 0 to disable built-in workers entirely (recommended for Kubernetes, where a dedicated worker pod runs 'solidinvoice worker'). Increase above 1 for high-traffic standalone deployments (e.g., --messenger-workers=5) (default 1)
      --metrics-port int        Port for the Prometheus metrics endpoint (only used when --enable-metrics is set) (default 9090)
      --port string             The default port to use for the application. When specifying a domain to use, the port will default to 443 (default "8765")
      --server-ip string        If you have multiple IP addresses on your server, specify the IP address to use. By default, the server will bind to all IP addresses (default "10.89.58.3")
      --skip-intro              Skip the introductory application info message
      --ssl-cert string         Path to custom SSL certificate file (requires --ssl-key and --domain)
      --ssl-key string          Path to custom SSL private key file (requires --ssl-cert and --domain)
      --worker-mode             Enable FrankenPHP worker mode for improved performance (keeps PHP workers alive between requests). Recommended for SaaS/high-traffic deployments. Can also be enabled via FRANKENPHP_WORKER_MODE=1 environment variable
      --worker-threads int      Number of FrankenPHP worker threads when worker mode is enabled (default: 2) (default 2)

逐参数说明(默认值取自上方实测回显):

参数默认值作用与注意事项
--port8765HTTP 监听端口;一旦指定 --domain,端口自动切换为 443
--server-ip自动探测本机出口 IP(实测环境回显 10.89.58.3)多网卡服务器指定绑定 IP;不指定时绑定全部 IP
--domain无指定域名后应用绑定 https://<域名> 并自动生成 SSL 证书
--disable-https关闭(默认 HTTPS)切换纯 HTTP;官方提示仅建议在反代终止 TLS 的场景使用,可与 --domain 组合声明反代背后的主机名
--lets-encrypt关闭自动签发 Let's Encrypt 证书,必须配合 --domain
--ssl-cert / --ssl-key无自定义证书/私钥路径,二者与 --domain 三者互相依赖(需同时给出)
--log-formatconsoleconsole 人类可读 / json 结构化日志(systemd 场景官方默认文件推荐 json)
--messenger-workers1后台消息 worker 进程数;0 表示完全禁用内置 worker(此时需另行运行 solidinvoice worker);高流量独立部署可调大(帮助原文示例 --messenger-workers=5)
--worker-mode关闭FrankenPHP worker 常驻模式,降低每请求开销;也可用环境变量 FRANKENPHP_WORKER_MODE=1 开启
--worker-threads2worker 模式下的线程数(仅在 worker 模式开启时有效)
--enable-metrics关闭在独立端口暴露 Prometheus 指标(内容为 Caddy HTTP 指标与 FrankenPHP worker/线程指标)
--metrics-port9090指标端口,仅在 --enable-metrics 开启时生效
--skip-intro关闭跳过启动时的 ASCII 图与 URL 摘要输出

典型组合示例(在应用服务器上执行):

# 反向代理终止 TLS,应用只监听本机回环的 9000 端口
solidinvoice run --disable-https --port=9000 --log-format=json

# 独立暴露公网,自动 Let's Encrypt 证书 + Prometheus 指标
solidinvoice run --domain=invoice.example.com --lets-encrypt --enable-metrics

⚠️ 注意:--lets-encrypt 要求域名解析到本机且 80/443 可达;--disable-https 与 --lets-encrypt、--ssl-cert/--ssl-key 三条 TLS 路线互斥,只能选其一。

四、环境变量层

环境变量分两组:一组与进程参数一一对应(systemd 部署时代替 CLI 参数),另一组控制连接与行为(进程参数没有覆盖到的地方)。以下全部变量与默认值取自官方发行文件 solidinvoice.env(systemd 单元引用的配置文件,逐行注释级实测核对)。

4.1 网络与 TLS

变量默认说明
SOLIDINVOICE_PORT8765对应 --port
SOLIDINVOICE_SERVER_IP自动探测对应 --server-ip(注释示例 0.0.0.0)
SOLIDINVOICE_DOMAIN空对应 --domain;设置后绑定 https://<域名>
SOLIDINVOICE_DISABLE_HTTPS0置 1 等价 --disable-https(反代终止 TLS 场景)
SOLIDINVOICE_LETS_ENCRYPT0置 1 等价 --lets-encrypt,与 DISABLE_HTTPS 互斥
SOLIDINVOICE_SSL_CERT / SOLIDINVOICE_SSL_KEY空自定义证书/私钥路径,与 DISABLE_HTTPS、LETS_ENCRYPT 互斥

4.2 性能

变量默认说明
FRANKENPHP_WORKER_MODE0置 1 等价 --worker-mode
SOLIDINVOICE_WORKER_THREADS2对应 --worker-threads
SOLIDINVOICE_MESSENGER_WORKERS1对应 --messenger-workers;置 0 禁用内置 worker,用独立 solidinvoice worker 进程接管

4.3 应用运行形态

变量默认说明
SOLIDINVOICE_ENVprod应用运行环境;官方注释提示仅本地开发改 dev
SOLIDINVOICE_DEBUG0调试开关(0/1),官方注释明确生产永不开启
SOLIDINVOICE_CONFIG_DIR/etc/solidinvoice配置目录:存放生成的密钥、OAuth 凭据,以及未接外部数据库时的 SQLite 库文件
SOLIDINVOICE_SKIP_INTRO0置 1 跳过启动横幅
SOLIDINVOICE_LOG_FORMATconsolejson(systemd 场景官方默认文件写明 json)/ console

4.4 连接类变量

变量默认说明
SOLIDINVOICE_DATABASE_URL未设置时使用配置目录内 SQLite数据库连接 URL,支持 mysql、postgresql、sqlite 三种驱动。官方注释示例:mysql://user:password@127.0.0.1:3306/solidinvoice、postgresql://user:password@127.0.0.1:5432/solidinvoice
SOLIDINVOICE_MAILER_DSN界面中配置的邮件设置出站邮件传输 DSN,设置后覆盖界面配置。官方注释示例:smtp://user:password@smtp.example.com:587、sendgrid://API_KEY@default、ses+smtp://ACCESS_KEY:SECRET_KEY@default
SOLIDINVOICE_MAILER_SENDER界面配置全局发件人,官方注释示例 SolidInvoice <noreply@example.com>,同样覆盖界面配置
SOLIDINVOICE_MESSENGER_DSNdoctrine://default?queue_name=async(应用库内队列)异步任务队列传输 DSN;高吞吐/多 worker 场景官方注释给出 redis://localhost:6379/messages、amqp://guest:guest@localhost/%2f/messages
SOLIDINVOICE_MEILISEARCH_URL空(禁用)可选全文检索:发票/客户/报价全文搜索走 Meilisearch;留空回退基础数据库查询
SOLIDINVOICE_MEILISEARCH_API_KEY空与上一项配套的检索密钥

4.5 应用行为变量

变量默认说明
SOLIDINVOICE_LOCALEen界面语言(en/fr/de/nl 等)
SOLIDINVOICE_ALLOW_REGISTRATION0是否允许访客自助注册(0/1);官方注释默认关闭,仅在有意开放时开启
SOLIDINVOICE_SENTRY_DSN空Sentry 错误与性能监控接入
SOLIDINVOICE_ENABLE_METRICS0置 1 等价 --enable-metrics
SOLIDINVOICE_METRICS_PORT9090对应 --metrics-port

4.6 MCP 会话变量(源码取证)

SolidInvoice 3.1.2 内置面向 AI Agent 的 MCP 服务(/_mcp 路由),其会话存储由 4 个环境变量控制。以下名称、默认值与取值范围取自应用源码 config/packages/pkg-mcp.php(3.1.2 tag):

变量默认值说明(源码注释原文口径)
SOLIDINVOICE_MCP_SESSION_STOREfile会话存储后端,可选 file(磁盘,单机默认)/ memory(进程内,仅开发用,重启即失)/ cache(PSR-16 缓存池,多节点场景配合 Redis 池)/ framework(复用应用 Symfony session 处理器)
SOLIDINVOICE_MCP_SESSION_CACHE_POOLcache.mcp.sessionsstore=cache 时使用的 PSR-16 缓存池服务 ID
SOLIDINVOICE_MCP_SESSION_PREFIXmcp-会话键前缀
SOLIDINVOICE_MCP_SESSION_TTL3600会话有效期(秒)

💡 技术拓展:环境变量层中"连接类"(4.4)之所以设计为覆盖界面配置,是因为邮件/队列故障往往发生在业务低峰的夜间任务里,运维直接改 systemd 环境重启即可止血,无需登录界面逐项排查;而业务偏好在数据库层随时可改,无需重启。两层各管一段故障半径。

五、配置目录层:/etc/solidinvoice

配置目录是应用"身世"的存放地。安装器(部署篇 4.3)执行后,实测目录清单如下:

oauth
solidinvoice.decrypt.private.php
solidinvoice.encrypt.public.php
solidinvoice.list.php
solidinvoice.SOLIDINVOICE_APPLICATION_URL.170fd7.php
solidinvoice.SOLIDINVOICE_APP_SECRET.31f70b.php
solidinvoice.SOLIDINVOICE_BUILD_ID.276607.php
solidinvoice.SOLIDINVOICE_DATABASE_URL.86f089.php
solidinvoice.SOLIDINVOICE_ENABLE_TELEMETRY.3b5772.php
solidinvoice.SOLIDINVOICE_INSTALLED.c0d8a4.php
solidinvoice.SOLIDINVOICE_LOCALE.b96b2c.php

5.1 命名规则与文件清单

加密配置文件命名为 solidinvoice.SOLIDINVOICE_<配置名>.<指纹>.php,每个文件对应一项配置:

文件对应配置写入时机
SOLIDINVOICE_APP_SECRET应用密钥(会话签名、API Token 哈希等的根密钥)安装第一步自动生成
SOLIDINVOICE_DATABASE_URL数据库连接 URL安装时按 --database-* 参数拼装
SOLIDINVOICE_INSTALLED安装完成标记安装收尾
SOLIDINVOICE_APPLICATION_URL对外访问 URL(发票链接、邮件地址用它拼接)安装时按 --application-url 写入
SOLIDINVOICE_LOCALE界面语言安装时按 --locale 写入
SOLIDINVOICE_BUILD_ID安装构建标识安装时生成
SOLIDINVOICE_ENABLE_TELEMETRY匿名使用统计开关安装时按 --disable-telemetry 写入

solidinvoice.list.php 是全部配置项的清单文件(值均为 null 占位),实测内容:

<?php

return [
    'SOLIDINVOICE_APPLICATION_URL' => null,
    'SOLIDINVOICE_APP_SECRET' => null,
    'SOLIDINVOICE_BUILD_ID' => null,
    'SOLIDINVOICE_DATABASE_URL' => null,
    'SOLIDINVOICE_ENABLE_TELEMETRY' => null,
    'SOLIDINVOICE_INSTALLED' => null,
    'SOLIDINVOICE_LOCALE' => null,
];

5.2 加密机制

每个加密配置文件是 Symfony Secrets Vault 加密后的 PHP 文件。以实测的 SOLIDINVOICE_LOCALE 文件为例(内容为二进制密文,非明文):

<?php // solidinvoice.SOLIDINVOICE_LOCALE.b96b2c on Sat, 24 Oct 2026 07:11:10 +0000

return "\x25\xA8\x0B\x8CL\x86\x40o\x5C\xA5\x91\xD8\xF3\xCD\x10\xF8\x8B\x0C_...";

配套的密钥对文件:

  • solidinvoice.encrypt.public.php:加密公钥
  • solidinvoice.decrypt.private.php:解密私钥,文件头注释行携带解密密钥标识(实测样例结构如下,密钥值本文脱敏):
<?php // solidinvoice.decrypt.private on Sat, 24 Oct 2026 07:10:33 +0000

// SYMFONY_DECRYPTION_SECRET=<base64 解密密钥,本文脱敏>
return "X\xC11\x80SiQ\x0C...";

写入机制(源码 ConfigWriter.php,3.1.2 tag 实证):配置名统一加前缀 SOLIDINVOICE_(常量 CONFIG_PREFIX),随后调用密钥库 seal() 加密落盘——这就是配置目录中所有文件名都带 SOLIDINVOICE_ 前缀的原因。oauth/ 子目录用于 OAuth 凭据存放(全新安装为空目录)。

5.3 修改通道与失效风险

  • 官方修改通道:安装器参数(见第七章)与控制台命令。例如安装后更新对外 URL,官方帮助文本给出的通道是:
solidinvoice console secrets:set SOLIDINVOICE_APPLICATION_URL
  • 升级兼容:应用加载器(源码 EnvLoader.php)内置旧版 env.php 配置的自动迁移逻辑(migrateToSecrets),从旧版本升级时旧配置文件会被自动转换为 secrets 形态。
  • 失效风险(实测确认):手工编辑这些带指纹的加密文件会破坏"文件名指纹 ↔ 内容"的对应关系,导致应用读不到配置或启动失败。改配置一律走安装器、secrets:set 或管理界面,不要直接改文件。

六、数据库设置层:app_config 表

业务层配置存放在应用库 app_config 表,与管理界面「设置」页一一对应。

6.1 表结构(实测 DESCRIBE)

setting_key      varchar(191)   配置键(路径式命名,如 invoice/payment_terms)
setting_value    varchar(191)   配置值(NULL 表示未设置,走 default_value)
description      text           字段说明
field_type       varchar(191)   Symfony 表单类型全限定名(决定设置页的控件形态)
form_options     longtext       表单选项(JSON)
default_value    varchar(191)   默认值
company_id       binary(16)     公司标识(多公司隔离维度)

field_type 直接决定该项在设置页渲染成什么控件(如 CheckboxType 渲染开关、EmailType 渲染邮箱输入框),company_id 则说明这套设置按公司隔离——多公司部署时每家公司有独立的发票前缀、提醒策略与公司抬头。

6.2 全量配置项(25 行实测)

连接应用库执行 SELECT setting_key, setting_value, field_type, default_value FROM app_config ORDER BY setting_key; 实测共 25 行,按前缀分组:

email/*(邮件发件,3 项)

setting_key实测值默认值表单类型
email/from_addressno-reply@solidinvoice.co同左EmailType
email/from_nameAcme Corp同左TextType
email/sending_options/providerNULLNULLMailTransportType(设置页邮件页含 SMTP/Gmail/Sendgrid/Mailgun/Postmark/Mandrill/Amazon SES 各服务商字段)

invoice/*(发票行为,10 项)

setting_key实测值默认值表单类型
invoice/bcc_addressNULLNULLEmailType
invoice/email_subjectNew Invoice - #{id}同左TextType
invoice/id_generation/strategyauto_increment同左BillingIdConfigurationType
invoice/id_generation/id_prefix(空)—TextType
invoice/id_generation/id_suffix(空)—TextType
invoice/payment_termsnet_30同左PaymentTermsSettingType
invoice/reminder/enabled1同左CheckboxType
invoice/reminder/pre_due_enabled1同左CheckboxType
invoice/reminder/pre_due_days3同左IntegerType
invoice/watermark1同左CheckboxType

quote/(报价行为,7 项,与 invoice/ 同构)

setting_key实测值默认值表单类型
quote/bcc_addressNULLNULLEmailType
quote/email_subjectNew Quotation - #{id}同左TextType
quote/id_generation/strategyauto_increment同左BillingIdConfigurationType
quote/id_generation/id_prefix(空)—TextType
quote/id_generation/id_suffix(空)—TextType
quote/watermark1同左CheckboxType

system/company/*(公司信息,5 项)

setting_key实测值默认值表单类型
system/company/company_nameAcme Corp同左TextType
system/company/currencyUSD同左CurrencyType
system/company/contact_details/addressNULLNULLAddressType
system/company/contact_details/emailNULLNULLEmailType
system/company/contact_details/phone_numberNULLNULLTextType
system/company/logoNULLNULLImageUploadType

几个实用结论:

  • #{id} 占位符:邮件主题里的 #{id} 会被替换为发票/报价单号,可自定义前后缀(如 INVOICE-2026-)。
  • 编号策略 strategy=auto_increment:单号自增;前缀/后缀自由拼接,配合后可实现"INV-0001-2026"式单号。
  • pre_due_days=3:到期前 3 天触发预到期提醒(pre_due_enabled=1 开启);逾期提醒由 reminder/enabled=1 总开关控制。
  • 实测环境全部行属于同一家公司(company_id 为同一加密二进制值),多公司部署时以上键按公司各存一份。

6.3 修改方式

app_config 的正常写入入口是管理界面「设置」页(界面按 field_type 渲染控件,保存后写回该表);邮件服务商的详细字段在设置的 Email 页,公司信息与默认币种在 System 页。数据库层的值与环境变量的关系见 4.4:邮件传输 DSN 若设置了环境变量会覆盖界面配置。

七、安装器参数:solidinvoice:install

安装器参数决定了配置目录层(第五章)的初始内容。solidinvoice console solidinvoice:install --help 实测输出(应用服务器上执行):

Description:
  Installs the application

Usage:
  solidinvoice:install [options]

Options:
      --database-driver=DATABASE-DRIVER      The database driver to use
      --database-host=DATABASE-HOST          The database host
      --database-port=DATABASE-PORT          The database port
      --database-name=DATABASE-NAME          The name of the database to use (will be created if it doesn't exist)
      --database-user=DATABASE-USER          The name of the database user
      --database-password=DATABASE-PASSWORD  The password for the database user
      --skip-user                            Skip creating the admin user
      --admin-password=ADMIN-PASSWORD        The password of admin user
      --admin-email=ADMIN-EMAIL              The email address of admin user
      --locale=LOCALE                        The locale to use
      --application-url=APPLICATION-URL      The URL where this SolidInvoice instance will be accessible (including protocol, e.g. https://invoices.example.com). Use `bin/console secrets:set SOLIDINVOICE_APPLICATION_URL` to update this after installation.
      --disable-telemetry                    Disable sending anonymous usage statistics
  -h, --help                                 Display help for the given command. When no command is given display help for the list command
      --silent                               Do not output any message
  -q, --quiet                                Only errors are displayed. All other output is suppressed
  -V, --version                              Display this application version
      --ansi|--no-ansi                       Force (or disable --no-ansi) ANSI output
  -n, --no-interaction                       Do not ask any interactive question
  -e, --env=ENV                              The Environment name. [default: "prod"]
      --no-debug                             Switch off debug mode.
      --profile                              Enables profiling (requires debug).
  -v|vv|vvv, --verbose                       Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

要点:

  • --database-name 的帮助原文写明 will be created if it doesn't exist——安装器自建库,因此数据库侧无需预建库(部署篇 4.1 据此不设预建库变量)。
  • --skip-user 跳过创建管理员(配合已导入用户数据的场景);--admin-email/--admin-password 创建管理员。
  • --application-url 帮助原文给出安装后更新通道:secrets:set SOLIDINVOICE_APPLICATION_URL(即第五章 5.3 的官方修改通道)。
  • --disable-telemetry 关闭匿名使用统计,对应配置目录中的 SOLIDINVOICE_ENABLE_TELEMETRY。
  • 一套完整的调用示例与逐步回显见《SolidInvoice 3.1.2 Docker Compose 部署指南》第四章,本文不再重复。

八、配置核查与排障命令

以下诊断命令经 solidinvoice console 命令清单实测确认存在于 3.1.2(用法以各自 --help 为准):

命令用途
debug:config查看应用最终合并后的配置树
debug:dotenv查看环境变量加载与解析结果
debug:container检查服务容器中的服务定义与参数
debug:router查看全部路由(含 API、/_mcp 等)
debug:firewall查看安全防火墙配置(登录、API 鉴权入口)
about输出应用概要(环境、版本、调试状态)
dbal:run-sql直接对应用库执行 SQL(核查 app_config 等表用)
doctrine:migrations:status查看数据库迁移状态(排查版本升级后表结构差异)
cache:clear清应用缓存(改配置排障常用)
mailer:test邮件发送自检(排查邮件配置)
api:openapi:export / api:graphql:export导出 API 规范文档(REST OpenAPI / GraphQL Schema)
cron:run手动触发定时任务(提醒、逾期标记等)
messenger:stats查看异步队列积压统计
meilisearch:* 系列检索索引管理(未接 Meilisearch 时无需关注)
mcp:keys:generate / debug:mcpMCP 服务密钥与调试

排障路径建议:先分层——启动类问题查进程参数与环境变量(第三、四章);连接类问题查配置目录加密文件是否齐全(第五章,ls /etc/solidinvoice 对照 5.1 清单);行为类问题查 app_config(第六章,dbal:run-sql 查表)。

九、常见问题

Q1:改了 systemd 里的 SOLIDINVOICE_PORT 却没生效? 两层可能:一是命令行参数优先级更高(官方发行文件头部注释原文 "CLI flags always take precedence over values set here."),检查服务单元的启动命令是否带了同名参数;二是改完未重启服务进程。端口实际绑定可用 ss -ltn | grep 8765(或自定义端口)核对。

Q2:直接编辑 /etc/solidinvoice 下的加密配置文件后应用异常? 见 5.3:这些文件是带指纹校验的加密密文(vault->seal() 落盘),手改会破坏指纹与密文一致性。恢复通道:用安装器重跑对应配置项,或 secrets:set SOLIDINVOICE_<名称> 重写;不要手编文件。

Q3:换了数据库密码后应用连不上库? 连接串加密存放在配置目录的 SOLIDINVOICE_DATABASE_URL 文件中。用 secrets:set SOLIDINVOICE_DATABASE_URL 写入新连接串后重启应用;期间可用 debug:dotenv 与 dbal:run-sql "SELECT 1;" 快速定位是连接串问题还是数据库侧问题。

Q4:发票邮件主题里的单号怎么自定义? 改 invoice/email_subject(模板占位符 #{id})与 invoice/id_generation/id_prefix/id_suffix(单号前后缀),均在管理界面「设置」页完成,对应第六章 6.2 表。

Q5:测试环境想彻底关闭遥测与提醒? 遥测:安装器 --disable-telemetry,或 secrets:set SOLIDINVOICE_ENABLE_TELEMETRY 重写该项。提醒:界面设置关闭 invoice/reminder/enabled 与 invoice/reminder/pre_due_enabled(第六章 6.2)。

Q6:想让全文搜索走 Meilisearch,配置在哪? 设置 SOLIDINVOICE_MEILISEARCH_URL(必要时加 SOLIDINVOICE_MEILISEARCH_API_KEY)并重启应用;不配置时应用自动回退数据库查询,功能可用但仅限基础匹配(4.4)。

Q7:高流量场景怎么调性能参数? 三件套:--worker-mode(或 FRANKENPHP_WORKER_MODE=1)开启 PHP 常驻 worker、--worker-threads 调线程数、--messenger-workers 调后台任务进程数;队列改 Redis/AMQP 走 SOLIDINVOICE_MESSENGER_DSN(4.2、4.4)。改完用 messenger:stats 观察队列积压验证效果。