覆寫組態設定
本主題討論如何在知道設定路徑的情況下衍生環境變數名稱。 您可以使用環境變數覆寫Adobe Commerce組態設定。 例如,您可以在生產系統上覆寫付款處理者的即時URL值。
您可以使用環境變數覆寫 任何 組態設定的值;不過,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>
例如,若要在「管理員」中尋找網站或存放區檢視範圍值:
-
以獲授權檢視網站的使用者身分登入「管理員」 。
-
按一下 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
中設定變數值並不一定能如預期運作,因為根據網頁伺服器組態,可以使用不同的應用程式進入點。 不論應用程式專案點為何,只要將$_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';
使用環境變數🔗設定組態值中顯示的逐步範例。
-
若要使用您在
$_ENV
陣列中設定的值,您必須在php.ini
檔案中設定variables_order = "EGPCS"
(環境、Get、Post、Cookie和伺服器)。 如需詳細資訊,請參閱PHP檔案。 -
針對雲端基礎結構上的Adobe Commerce,如果您嘗試使用Project Web介面覆寫組態設定,您必須在變數名稱前面加上
env:
。 例如: