config.xml vs local.xml


17

違いは何であるアプリは、/ etc / config.xmlに及びアプリの/ etc / local.xml

一部の構成が重複しているように感じます。常にlocal.xmlで処理する必要があるので、config.xmlに他のすべてのものを含める目的は何ですか?また、それはいつ使用されますか?

回答:


15

config.xmlとlocal.xmlが一緒にロードされ、他のxmlファイルも一緒にロードされapp/localます。それらはロードされますMage_Core_Model_Config::loadBase()

public function loadBase()
    {
        $etcDir = $this->getOptions()->getEtcDir();
        $files = glob($etcDir.DS.'*.xml');
        $this->loadFile(current($files));
        while ($file = next($files)) {
            $merge = clone $this->_prototype;
            $merge->loadFile($file);
            $this->extend($merge);
        }
        if (in_array($etcDir.DS.'local.xml', $files)) {
            $this->_isLocalConfigLoaded = true;
        }
        return $this;
    } 

Magentoは、config.xmlの内容をlocal.xmlに移動し、config.xmlを完全に削除すると機能します。
この分離には理由があります。
config.xmlには、Magentoがインストールされている環境に依存しない設定が含まれています(呼び出しましょう)。
local.xmlには、環境に依存する設定(DB接続、キャッシュエンジン、暗号化キー、セッションハンドラー)が含まれています。
このようにして、設定の一部をバージョン管理(config.xml)することができ、環境に応じて小さなファイルしかありません。


4
また、アップグレード中にconfig.xmlは上書きされ、local.xmlは上書きされません。そして最後に、設定解析の開始時と終了時にlocal.xmlが実際に2回ロードされます。すべてが1つの構成オブジェクトにマージされるため、local.xmlに配置したものは、モジュール内の他の構成をオーバーライドします。
ペタルジャンバゾフ

4
@PetarDzhambazov "config parsing of end config parsing"はcore_config_datalocal.xmlの後に値が解析およびマージされるため、完全に正しい/明確ではありません。
ベンマーク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.