config.xml vs local.xml


17

Яка різниця між app / etc / config.xml та app / etc / local.xml ?

Я відчуваю, що деякі конфігурації дублюються. Я завжди маю справу з w / 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 містить налаштування, що залежать від середовища: з'єднання БД, кеш-пам’ятник, ключ шифрування, обробник сеансу.
Таким чином, можна налаштувати частину налаштувань (config.xml), і у вас є лише невеликий файл залежно від середовища.


4
Також під час оновлення config.xml буде перезаписано, а local.xml не буде. І нарешті local.xml фактично завантажується двічі, на початку та в кінці розбору конфігурацій. Оскільки це все об'єднано в один об’єкт конфігурації, все, що ви введете у local.xml, замінить будь-який інший конфігурацію в будь-якому модулі.
Петро Джамбазов

4
@PetarDzhambazov "в кінці розбору конфігурації" не зовсім коректний / зрозумілий, оскільки значення з core_config_dataаналізуються та об'єднуються після local.xml .
Орієнтири
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.