覆盖配置设置

本主题讨论如何获取知道配置路径的环境变量名称。 您可以使用环境变量覆盖Adobe Commerce配置设置。 例如,您可以在生产系统上覆盖支付处理者的实时URL的值。

您可以使用环境变量覆盖​ any ​配置设置的值;但是,Adobe建议您使用共享配置文件config.php和系统特定的配置文件env.php来保持一致的设置,如部署常规概述中所述。

TIP
查看​_Commerce on Cloud Infrastructure指南_​中的配置环境主题。

环境变量

环境变量名称包括其作用域,后跟特定格式的配置路径。 以下部分将更详细地讨论如何确定变量名称。

您可以将变量用于以下任何一项:

可在以下位置找到配置路径:

变量名称

系统设置变量名称的一般格式如下:

<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:设置全局、网站或商店视图变量

范围值来自storestore_groupstore_website表。

  • store表指定存储视图名称和代码
  • store_website表指定了网站名称和代码

您还可以使用“管理员”查找代码值。

如何读取表:

  • Path in Admin

    逗号之前的值是管理员导航中的路径。 逗号后的值是右窗格中的选项。

  • Variable name列是相应环境变量的名称。

    如果需要,可以选择将这些配置参数的系统值指定为环境变量。

    • 整个变量名称始终为大写字母
    • CONFIG__开始变量名称(请注意两个下划线字符)
    • 您可以在Admin或Commerce数据库中找到变量名称的<STORE_VIEW_CODE><WEBSITE_CODE>部分,如以下部分所述。
    • 您可以找到<SYSTEM__VARIABLE__NAME>,如第2步:设置全局、网站或商店视图变量中所述。

在管理员中查找网站或商店视图范围

下表总结了如何在“管理员”中查找网站或存储视图值。

描述
Admin中的路径
变量名称
创建、编辑、删除商店视图
Stores > All Stores
CONFIG__STORES__<STORE_VIEW_CODE>__<SYSTEM__VARIABLE__NAME>
创建、编辑和删除网站
Stores > All Stores
CONFIG__WEBSITES__<WEBSITE_CODE>__<SYSTEM__VARIABLE__NAME>

例如,要在“管理员”中查找网站或存储视图范围值,请执行以下操作:

  1. 以有权查看网站的用户身份登录到Admin。

  2. 单击​ Stores > All Stores

  3. 单击网站或商店视图的名称。

    右侧窗格显示如下。

    查找网站代码

  4. 作用域名称显示在​ Code ​字段中。

  5. 继续执行步骤2:设置全局、网站或商店视图变量

在数据库中查找网站或商店视图范围

要从数据库获取这些值,请执行以下操作:

  1. 以文件系统所有者的身份登录开发系统(如果尚未登录)。

  2. 输入以下命令:

    code language-bash
    mysql -u <database-username> -p
    
  3. mysql>提示符下,按显示的顺序输入以下命令:

    code language-shell
    use <database-name>;
    
  4. 使用以下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 |
    +------------+-------+--------------+------------+------------------+------------+
    
  5. 使用code列中的值作为作用域名称,而不是name值。

    例如,要为测试网站设置配置变量,请使用以下格式:

    code language-shell
    CONFIG__WEBSITES__TEST1__<SYSTEM__VARIABLE__NAME>
    

    其中<SYSTEM__VARIABLE__NAME>来自下一分区。

步骤2:设置全局、网站或商店视图变量

本节讨论如何设置系统变量。

  • 要设置全局范围(即所有网站、商店和商店视图)的值,请以CONFIG__DEFAULT__开始变量名称。

  • 要为特定商店视图或网站设置值,请按照步骤1:查找范围值中所述启动变量名称:

    • CONFIG__WEBSITES
    • CONFIG__STORES
  • 变量名称的最后一部分是配置路径,每个配置设置具有唯一性。

查看一些示例

下表显示了几个示例变量。

描述
管理员中的路径(省略​ 商店 > 设置 > 配置
变量名称
Elasticsearch的服务器主机名
目录> 目录Elasticsearch服务器主机名
<SCOPE>__CATALOG__SEARCH__ELASTICSEARCH_SERVER_HOSTNAME
Elasticsearch服务器端口
目录> 目录Elasticsearch服务器端口
<SCOPE>__CATALOG__SEARCH__ELASTICSEARCH_SERVER_PORT
装运国家/地区
销售> 送货设置
<SCOPE>__SHIPPING__ORIGIN__COUNTRY_ID
自定义管理员URL
高级> 管理员
<SCOPE>__ADMIN__URL__CUSTOM
自定义管理路径
高级> 管理员
<SCOPE>__ADMIN__URL__CUSTOM_PATH

示例

本节介绍如何查找某些示例变量的值。

Elasticsearch的服务器主机名

要查找全局HTML缩小的变量名称,请执行以下操作:

  1. 确定范围。

    它是全局范围,因此变量名称以CONFIG__DEFAULT__开头

  2. 变量名称的其余部分为CATALOG__SEARCH__ELASTICSEARCH_SERVER_HOSTNAME

    结果:变量名称为CONFIG__DEFAULT__CATALOG__SEARCH__ELASTICSEARCH_SERVER_HOSTNAME

装运国家/地区

要查找发运国家/地区的变量名称,请执行以下操作:

  1. 确定范围。

    数据库中查找范围,如步骤1中所述:查找网站或存储视图范围值。 (您还可以在Admin中找到值,如步骤2中的[表中所示:设置全局、网站或存储视图变量] (#step-2-set-global-website-or-store-view-variables。

    例如,范围可以是CONFIG__WEBSITES__DEFAULT

  2. 变量名称的其余部分为SHIPPING__ORIGIN__COUNTRY_ID

    结果:变量名称为CONFIG__WEBSITES__DEFAULT__SHIPPING__ORIGIN__COUNTRY_ID

如何使用环境变量

使用PHP的$_ENV关联数组将配置值设置为变量。 可以在Commerce运行时运行的任何PHP脚本中设置值。

TIP
index.phppub/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';

使用环境变量设置配置值中显示了分步示例。

WARNING
  • 要使用您在$_ENV数组中设置的值,必须在php.ini文件中设置variables_order = "EGPCS"(Environment、Get、Post、Cookie和服务器)。 有关详细信息,请参阅PHP文档

  • 对于云基础架构上的Adobe Commerce,如果您尝试使用Project Web Interface覆盖配置设置,则必须在变量名称前加上env:。 例如:

环境变量示例
recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c