config.xml против local.xml

17

В чем разница между app / etc / config.xml и app / etc / local.xml ?

Я чувствую, что некоторые конфигурации дублируются. Мне всегда приходится иметь дело с / local.xml, так какова цель наличия всего прочего в config.xml и когда он используется?

veilig
источник

Ответы:

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 .
отметки