使用環境變數的範例

此範例說明如何在開發系統中設定共用、系統特定和敏感的值,然後使用共用組態、config.php和PHP環境變數的組合來設定生產系統中的所有值。

這些組態設定可在開發系統和生產系統之間共用:

來自​ 商店 >設定> 設定 >一般> 一般 ​的VAT號碼和商店名稱

這些組態設定是系統專屬的或敏感的,如下所示:

  • 從​ 商店 >設定> 設定 >一般> 連絡人 ​傳送電子郵件給(敏感)
  • 預設電子郵件網域(系統專用),來自​ 商店 >設定> 設定 >客戶> 客戶設定 > 建立新帳戶選項

您可以使用相同的程式來配置下列參照中的任何設定:

開始之前

開始之前,請設定檔案系統許可權和擁有權,如開發、建置和生產系統的先決條件中所述。

假設

本主題提供修改生產系統組態的範例。 您可以視需要選擇不同的組態選項。

在本範例中,我們假設如下:

  • 您使用Git原始檔控制
  • 開發系統可在名為mconfig的Git遠端存放庫中取得
  • 您的Git工作分支名為m2.2_deploy

步驟1:在開發系統中設定設定

若要在開發系統中設定預設語言環境及加權單位:

  1. 登入管理員。

  2. 按一下​ 商店 >設定> 組態 >一般> 一般

  3. 如果您有多個可用網站,請使用左上角的​ 商店檢視 ​清單,切換至不同的網站,如下圖所示。

    切換網站

  4. 在右窗格中,展開​ 存放區資訊

  5. 如有必要,請清除​ VAT編號 ​欄位旁的​ 使用預設值 ​核取方塊。

  6. 在欄位中輸入數字(例如,12345)。

  7. 在​ 存放區名稱 ​欄位中,輸入值(如My Store)。

  8. 按一下​ 儲存設定

  9. 使用​ 存放區檢視 ​清單來選取​ 預設設定,如下圖所示。

    切換到預設設定

  10. 在左側導覽列的[一般]底下,按一下[連絡人]。

  11. 清除​ 傳送電子郵件至 ​欄位旁的​ 使用預設值 ​核取方塊。

  12. 在欄位中輸入電子郵件地址。

  13. 按一下​ 儲存設定

  14. 在左窗格中,按一下「客戶> 客戶組態」。

  15. 在右窗格中,展開​ 建立新帳戶選項

  16. 清除​ 預設電子郵件網域 ​欄位旁的​ 使用系統值 ​核取方塊。

  17. 在欄位中輸入網域名稱。

  18. 按一下​ 儲存設定

  19. 如果出現提示,請排清快取。

步驟2:更新設定

現在您已變更管理員中的設定,請將共用設定寫入檔案,如此章節所述。

若要更新組態

  1. 以檔案系統擁有者的身分登入或切換到您的開發系統。

  2. 變更至應用程式根目錄,然後執行傾印命令。

    code language-bash
    cd <Magento root dir>
    php bin/magento app:config:dump
    

    例如,如果Commerce安裝在/var/www/html/magento2中,請輸入:

    code language-bash
    cd /var/www/html/magento2
    php bin/magento app:config:dump
    
  3. 確認app/etc/config.php已更新。

    code language-bash
    git status
    

    範例回應:

    code language-none
    On branch m2.2_deploy
    Changed but not updated:
      (use "git add <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
           modified:   app/etc/config.php
    
    note warning
    WARNING
    請​_不_​將變更提交至generatedpub/mediapub/static目錄至原始檔控制。 您會在建置系統上產生這些檔案。 開發系統可能有程式碼、主題等未準備好用於生產系統的專案。
  4. 只將您對app/etc/config.php的變更籤入至原始檔控制。

    code language-bash
    git add app/etc/config.php && git commit -m "Updated shared configuration" && git push mconfig m2.2_deploy
    

請注意,即使app/etc/env.php (系統特定組態)已更新,也不要將其簽入原始檔控制。 稍後在本程式中,您將在生產系統上建立相同的組態設定。

步驟3:更新您的建置系統並產生檔案

現在您已確認將共用組態的變更提交至原始檔控制,您可以在建置系統中提取這些變更、編譯程式碼,並產生靜態檔案。 最後一個步驟是將這些變更提取至您的生產系統。

若要更新組建系統

  1. 以檔案系統擁有者的身分登入組建系統。

  2. 變更至應用程式根目錄。

    code language-bash
    cd <Magento root dir>
    
  3. 從原始檔控制提取變更到app/etc/config.php

    code language-bash
    git pull mconfig m2.2_deploy
    
  4. 編譯程式碼。

    code language-bash
    bin/magento setup:di:compile
    
  5. 編譯程式碼之後,產生靜態檢視檔案。

    code language-bash
    bin/magento setup:static-content:deploy -f
    
  6. 檢查原始檔控制中的變更。

    code language-bash
    git add -A && git commit -m "Updated files on build system" && git push mconfig m2.2_deploy
    

步驟4:更新生產系統

該流程的最後一步是更新您的生產系統。 您必須分成兩個部分來執行:

  • 更新敏感和系統專屬設定
  • 更新共用設定

更新敏感和系統專屬設定

若要使用環境變數設定敏感和系統專屬設定,您必須知道以下事項:

  • 每個設定的範圍

    如果您依照步驟1的指示進行,「傳送電子郵件給」的範圍是全域的(亦即「預設設定」範圍),「預設電子郵件網域」的範圍是網站。

    您必須知道網站的程式碼,才能設定預設電子郵件網域設定值。 請參閱使用環境變數覆寫組態設定,以取得尋找它的詳細資訊。

  • 每個設定的設定路徑

    此範例中使用的設定路徑如下:

    table 0-row-2 1-row-2 2-row-2
    設定名稱 設定路徑
    傳送電子郵件至 contact/email/recipient_email
    預設電子郵件網域 customer/create_account/email_domain

    您可以在敏感與系統特定組態路徑參考中找到所有敏感與系統特定組態路徑。

將設定路徑轉換為變數名稱

使用環境變數覆寫組態設定中所述,變數的格式為:

<SCOPE>__<SYSTEM__VARIABLE__NAME>

全域範圍的<SCOPE>值為CONFIG__DEFAULT__,或網站範圍的CONFIG__WEBSITES__<WEBSITE CODE>

若要尋找<SYSTEM__VARIABLE__NAME>的值,請將設定路徑中的每個/字元取代為兩個底線。

變數名稱如下:

名稱
設定路徑
變數名稱
傳送電子郵件至
contact/email/recipient_email
CONFIG__DEFAULT__CONTACT__EMAIL__RECIPIENT_EMAIL
預設電子郵件網域
customer/create_account/email_domain
CONFIG__WEBSITES__BASE__CUSTOMER__CREATE_ACCOUNT__EMAIL_DOMAIN
INFO
前面的表格有預設電子郵件網域組態設定的網站程式碼BASE範例。 將BASE取代為您商店的適當網站代碼。

使用環境變數設定變數

您可以使用下列格式設定index.php中的變數值:

$_ENV['VARIABLE'] = 'value';

若要設定變數值

  1. 以檔案系統擁有者的身分登入您的生產系統,或切換到該檔案系統擁有者。

  2. 在文字編輯器中開啟<Commerce root dir>/pub/index.php

  3. index.php中的任何地方,設定變數的值,類似下列內容:

    code language-php
    $_ENV['CONFIG__DEFAULT__CONTACT__EMAIL__RECIPIENT_EMAIL'] = 'myname@example.com';
    $_ENV['CONFIG__WEBSITES__BASE__CUSTOMER__CREATE_ACCOUNT__EMAIL_DOMAIN'] = 'magento.com';
    
  4. 將變更儲存至pub/index.php並結束文字編輯器。

  5. 繼續下一節。

更新共用設定

本節說明如何提取您在開發及建置系統上所做的所有變更,這些變更會更新共用組態設定(商店名稱和VAT編號)。

若要更新生產系統

  1. 以檔案系統擁有者的身分登入生產系統。

  2. 變更為應用程式根並啟用維護模式。

    code language-bash
    cd <Magento root dir>
    
    code language-bash
    bin/magento maintenance:enable
    

    如需其他選項,例如設定IP位址白名單的功能,請參閱magento maintenance:enable

  3. 透過在app/etc/env.php中將cron_run設定為false來停止任何執行中的佇列背景工作,如下所示:

    code language-php?start_inline=1
    'cron_consumers_runner' => [
            'cron_run' => false
        ]
    
  4. 更新設定。

    code language-bash
    bin/magento app:config:import
    
  5. 最後,kill任何使用中的消費者處理序。

    code language-bash
    kill <PID>
    

    其中PID是要終止的處理序識別碼,例如:

    code language-bash
    kill 1234
    
  6. 從原始檔控制提取程式碼。

    code language-bash
    git pull mconfig m2.2_deploy
    
  7. 更新設定。

    code language-bash
    bin/magento app:config:import
    
  8. 清除快取。

    code language-bash
    bin/magento cache:clean
    
  9. 結束維護模式。

    code language-bash
    bin/magento maintenance:disable
    

驗證Admin中的組態設定

本節探討如何在生產系統管理員中驗證組態設定。

若要驗證組態設定

  1. 登入生產系統的管理員。

  2. 按一下​ 商店 >設定> 組態 >一般> 一般

  3. 使用左上角的​ 商店檢視 ​清單,切換到不同的網站。

    您在開發系統中設定的共用組態選項顯示如下。

    檢查生產系統中的設定

    note info
    INFO
    存放區名稱 ​欄位可在網站範圍中編輯,但如果您切換至預設設定範圍,則無法編輯。 這是您在開發系統中設定選項的結果。 VAT編號 ​的值在網站範圍中不可編輯。
  4. 如果您尚未這樣做,請切換到預設設定範圍。

  5. 在左側導覽列的[一般]底下,按一下[連絡人]。

    無法編輯​ 傳送電子郵件給 ​欄位,如下圖所示。 此為敏感設定。

    檢查生產系統中的設定

  6. 在左窗格中,按一下「客戶> 客戶組態」。

  7. 在右窗格中,展開​ 建立新帳戶選項

    預設電子郵件網域 ​欄位的值顯示如下。 此為系統專屬設定。

    檢查生產系統中的設定

recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c