在維護多個 typo3 實例時,常常面臨一個難題:每個實例的數據庫連接、緩存設置、圖片處理路徑等配置都可能不同。如果直接在代碼中硬編碼這些配置,不僅難以維護,而且容易出錯。更糟糕的是,每次部署都需要修改代碼,這無疑增加了工作量和出錯的風險。
為了解決這個問題,我嘗試過多種方法,例如使用不同的配置文件,然后在代碼中根據環境變量選擇加載哪個文件。但是,這種方法不夠優雅,而且隨著配置項的增多,管理起來會越來越復雜。 直到我發現了 SourceBroker/configs 這個 composer 包。
SourceBroker/configs 允許你根據 TYPO3_CONTEXT 環境變量加載不同的配置文件。你只需按照一定的目錄結構組織你的配置文件,然后在 typo3conf/AdditionalConfiguration.php 中添加幾行代碼即可。
首先,使用 Composer 安裝該包:
composer require sourcebroker/configs
然后,在 typo3conf/AdditionalConfiguration.php 文件中添加以下代碼:
<?phpdefined('TYPO3') or die();SourceBrokerConfigTypo3Config::initialize() ->appendContextToSiteName() ->includeContextDependentConfigurationFiles();
接下來,你需要在 config/context 目錄下創建子目錄,例如 1_verbosity、2_mode、3_instance 等。 目錄名中的數字決定了配置文件的優先級,數字越小優先級越高。 在這些子目錄下,創建與 TYPO3_CONTEXT 值對應的 PHP 文件,例如 config/context/3_instance/Production.php、config/context/3_instance/Staging.php 等。
例如,如果你的 TYPO3_CONTEXT 設置為 Production/Staging/Beta,那么系統將依次加載 config/context/1_verbosity/Production.php、config/context/2_mode/Staging.php 和 config/context/3_instance/Beta.php 這三個文件中的配置。 你可以根據需要創建任意數量的目錄和文件,來滿足不同的配置需求。
為了更好地理解,可以參考官方提供的示例配置,它們位于 Resources/private/Examples/Example1/context 目錄下。 記住,你可以隨意更改目錄名稱(除了數字和下劃線部分),但要保持數字下劃線的命名約定。
更進一步,如果安裝了 helhum/dotenv-connector 包,你還可以利用 .env 文件來管理部分配置,例如數據庫連接信息。 這使得你可以將敏感信息存儲在 git 倉庫之外,提高安全性。
SourceBroker/configs 還提供了一個非常有用的功能:取消緩存異常。 你可以在配置文件中添加以下代碼來禁用開發環境下的特定緩存配置:
$GLOBALS'TYPO3_CONF_VARS''configs''cacheConfigurations'['uncache'] = false;
總而言之,SourceBroker/configs 極大地簡化了 TYPO3 多環境配置的管理。通過靈活的目錄結構和環境變量控制,它使得配置管理更加高效、便捷,并且降低了出錯的風險。 如果你正在尋找一種優雅的方式來管理 TYPO3 的多環境配置,強烈推薦你嘗試一下這個 Composer 包。 學習更多 Composer 的使用方法,可以參考這個在線學習地址:學習地址