覆盖配置设置
本主题讨论如何获取知道配置路径的环境变量名称。 您可以使用环境变量覆盖Adobe Commerce配置设置。 例如,您可以在生产系统上覆盖支付处理者的实时URL的值。
您可以使用环境变量覆盖 any 配置设置的值;但是,Adobe建议您使用共享配置文件config.php
和系统特定的配置文件env.php
来保持一致的设置,如部署常规概述中所述。
环境变量
环境变量名称包括其作用域,后跟特定格式的配置路径。 以下部分将更详细地讨论如何确定变量名称。
您可以将变量用于以下任何一项:
-
必须使用环境变量或
magento config:sensitive:set
命令设置敏感值。 -
必须使用以下方式设置系统特定的值:
- 环境变量
magento config:set
命令- 管理员后接
magento app:config:dump
命令
可在以下位置找到配置路径:
变量名称
系统设置变量名称的一般格式如下:
<SCOPE>__<SYSTEM__VARIABLE__NAME>
<SCOPE>
可以是:
-
全局范围(即 所有 范围的全局设置)
全局范围变量的格式如下:
CONFIG__DEFAULT__<SYSTEM__VARIABLE__NAME>
-
特定范围(即,设置仅影响指定的商店视图或网站)
例如,存储视图范围变量的格式如下:
CONFIG__STORES__ <STORE_VIEW_CODE>__<SYSTEM__VARIABLE__NAME>
有关作用域的详细信息,请参阅:
<SYSTEM__VARIABLE__NAME>
是/
被双下划线字符替换的配置路径。 有关详细信息,请参阅第2步:设置系统变量。
变量格式
<SCOPE>
与<SYSTEM__VARIABLE__NAME>
用两个下划线字符分隔。
<SYSTEM__VARIABLE__NAME>
派生自配置设置的 配置路径,该路径是唯一标识特定设置的/
分隔字符串。 将配置路径中的每个/
字符替换为两个下划线字符以创建系统变量。
如果配置路径包含下划线字符,则下划线字符将保留在变量中。
配置路径的完整列表可在以下位置找到:
步骤1:查找网站或商店视图范围值
本节讨论如何查找和设置每个 作用域 的系统配置值(商店视图或网站)。 要设置全局范围变量,请参阅步骤2:设置全局、网站或商店视图变量。
范围值来自store
、store_group
和store_website
表。
store
表指定存储视图名称和代码store_website
表指定了网站名称和代码
您还可以使用“管理员”查找代码值。
如何读取表:
-
Path in Admin
列逗号之前的值是管理员导航中的路径。 逗号后的值是右窗格中的选项。
-
Variable name
列是相应环境变量的名称。如果需要,可以选择将这些配置参数的系统值指定为环境变量。
- 整个变量名称始终为大写字母
- 以
CONFIG__
开始变量名称(请注意两个下划线字符) - 您可以在Admin或Commerce数据库中找到变量名称的
<STORE_VIEW_CODE>
或<WEBSITE_CODE>
部分,如以下部分所述。 - 您可以找到
<SYSTEM__VARIABLE__NAME>
,如第2步:设置全局、网站或商店视图变量中所述。
在管理员中查找网站或商店视图范围
下表总结了如何在“管理员”中查找网站或存储视图值。
CONFIG__STORES__<STORE_VIEW_CODE>__<SYSTEM__VARIABLE__NAME>
CONFIG__WEBSITES__<WEBSITE_CODE>__<SYSTEM__VARIABLE__NAME>
例如,要在“管理员”中查找网站或存储视图范围值,请执行以下操作:
-
以有权查看网站的用户身份登录到Admin。
-
单击 Stores > All Stores。
-
单击网站或商店视图的名称。
右侧窗格显示如下。
-
作用域名称显示在 Code 字段中。
-
继续执行步骤2:设置全局、网站或商店视图变量。
在数据库中查找网站或商店视图范围
要从数据库获取这些值,请执行以下操作:
-
以文件系统所有者的身份登录开发系统(如果尚未登录)。
-
输入以下命令:
code language-bash mysql -u <database-username> -p
-
在
mysql>
提示符下,按显示的顺序输入以下命令:code language-shell use <database-name>;
-
使用以下SQL查询查找相关值:
code language-shell SELECT * FROM STORE; SELECT * FROM STORE_WEBSITE;
下面是一个示例:
code language-shell mysql> SELECT * FROM STORE_WEBSITE; +------------+-------+--------------+------------+------------------+------------+ | website_id | code | name | sort_order | default_group_id | is_default | +------------+-------+--------------+------------+------------------+------------+ | 0 | admin | Admin | 0 | 0 | 0 | | 1 | base | Main Website | 0 | 1 | 1 | | 2 | test1 | Test Website | 0 | 3 | 0 | +------------+-------+--------------+------------+------------------+------------+
-
使用
code
列中的值作为作用域名称,而不是name
值。例如,要为测试网站设置配置变量,请使用以下格式:
code language-shell CONFIG__WEBSITES__TEST1__<SYSTEM__VARIABLE__NAME>
其中
<SYSTEM__VARIABLE__NAME>
来自下一分区。
步骤2:设置全局、网站或商店视图变量
本节讨论如何设置系统变量。
-
要设置全局范围(即所有网站、商店和商店视图)的值,请以
CONFIG__DEFAULT__
开始变量名称。 -
要为特定商店视图或网站设置值,请按照步骤1:查找范围值中所述启动变量名称:
CONFIG__WEBSITES
CONFIG__STORES
-
变量名称的最后一部分是配置路径,每个配置设置具有唯一性。
下表显示了几个示例变量。
<SCOPE>__CATALOG__SEARCH__ELASTICSEARCH_SERVER_HOSTNAME
<SCOPE>__CATALOG__SEARCH__ELASTICSEARCH_SERVER_PORT
<SCOPE>__SHIPPING__ORIGIN__COUNTRY_ID
<SCOPE>__ADMIN__URL__CUSTOM
<SCOPE>__ADMIN__URL__CUSTOM_PATH
示例
本节介绍如何查找某些示例变量的值。
Elasticsearch的服务器主机名
要查找全局HTML缩小的变量名称,请执行以下操作:
-
确定范围。
它是全局范围,因此变量名称以
CONFIG__DEFAULT__
开头 -
变量名称的其余部分为
CATALOG__SEARCH__ELASTICSEARCH_SERVER_HOSTNAME
。结果:变量名称为
CONFIG__DEFAULT__CATALOG__SEARCH__ELASTICSEARCH_SERVER_HOSTNAME
装运国家/地区
要查找发运国家/地区的变量名称,请执行以下操作:
-
确定范围。
在数据库中查找范围,如步骤1中所述:查找网站或存储视图范围值。 (您还可以在Admin中找到值,如步骤2中的[表中所示:设置全局、网站或存储视图变量] (#step-2-set-global-website-or-store-view-variables。
例如,范围可以是
CONFIG__WEBSITES__DEFAULT
。 -
变量名称的其余部分为
SHIPPING__ORIGIN__COUNTRY_ID
。结果:变量名称为
CONFIG__WEBSITES__DEFAULT__SHIPPING__ORIGIN__COUNTRY_ID
如何使用环境变量
使用PHP的$_ENV
关联数组将配置值设置为变量。 可以在Commerce运行时运行的任何PHP脚本中设置值。
index.php
或pub/index.php
中设置变量值并不总是按预期运行,因为可以根据Web服务器配置使用不同的应用程序入口点。 通过将指令置于app/bootstrap.php
文件中,而不考虑不同的应用程序入口点,可以始终执行$_ENV
指令,因为app/bootstrap.php
文件作为Commerce架构的一部分加载。$_ENV
下面是设置两个$_ENV
值的示例:
$_ENV['CONFIG__DEFAULT__CATALOG__SEARCH__ELASTICSEARCH_SERVER_HOSTNAME'] = 'http://search.example.com';
$_ENV['CONFIG__DEFAULT__GENERAL__STORE_INFORMATION__MERCHANT_VAT_NUMBER'] = '1234';
使用环境变量设置配置值中显示了分步示例。
-
要使用您在
$_ENV
数组中设置的值,必须在php.ini
文件中设置variables_order = "EGPCS"
(Environment、Get、Post、Cookie和服务器)。 有关详细信息,请参阅PHP文档。 -
对于云基础架构上的Adobe Commerce,如果您尝试使用Project Web Interface覆盖配置设置,则必须在变量名称前加上
env:
。 例如: