覆寫組態設定

本主題討論如何在知道設定路徑的情況下衍生環境變數名稱。 您可以使用環境變數覆寫Adobe Commerce組態設定。 例如,您可以在生產系統上覆寫付款處理者的即時URL值。

您可以使用環境變數覆寫​ 任何 ​組態設定的值;不過,Adobe建議您使用共用組態檔config.php和系統特定組態檔env.php來維持一致的設定,如部署一般概覽中所述。

TIP
檢視​_雲端基礎結構上的Commerce_​中的設定環境主題。

環境變數

環境變數名稱包含其範圍,及其以特定格式顯示的設定路徑。 以下小節將更詳細地討論如何決定變數名稱。

您可以將變數用於下列任一專案:

可在下列位置找到設定路徑:

變數名稱

系統設定變數名稱的一般格式如下:

<SCOPE>__<SYSTEM__VARIABLE__NAME>

<SCOPE>可以是:

<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:設定全域、網站或商店檢視變數中所述。

在管理員中尋找網站或商店檢視範圍

下表摘要說明如何在「管理員」中尋找網站或商店檢視值。

說明
管理員中的路徑
變數名稱
建立、編輯、刪除存放區檢視
Stores > All Stores
CONFIG__STORES__<STORE_VIEW_CODE>__<SYSTEM__VARIABLE__NAME>
建立、編輯、刪除網站
Stores > All Stores
CONFIG__WEBSITES__<WEBSITE_CODE>__<SYSTEM__VARIABLE__NAME>

例如,若要在「管理員」中尋找網站或存放區檢視範圍值:

  1. 以獲授權檢視網站的使用者身分登入「管理員」 。

  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中設定變數值並不一定能如預期運作,因為根據網頁伺服器組態,可以使用不同的應用程式進入點。 不論應用程式專案點為何,只要將$_ENV指令放置在app/bootstrap.php檔案中,$_ENV指令一律會執行,因為app/bootstrap.php檔案載入為Commerce架構的一部分。

以下為設定兩個$_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"(環境、Get、Post、Cookie和伺服器)。 如需詳細資訊,請參閱PHP檔案

  • 針對雲端基礎結構上的Adobe Commerce,如果您嘗試使用Project Web介面覆寫組態設定,您必須在變數名稱前面加上env:。 例如:

環境變數範例
recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c