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