config.xml与local.xml


17

是什么区别应用程序的/ etc / config.xml文件应用程序的/ etc / local.xml中

我觉得有些配置重复。我总是必须处理w / local.xml,那么在config.xml中包含所有其他内容的目的是什么?何时使用它?

Answers:


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;
    } 

如果将config.xml的内容移动到local.xml并完全删除config.xml,则Magento将起作用。
存在这种分离是有原因的。
config.xml包含(让我们称呼它们)不依赖于安装Magento的环境的设置。
local.xml包含与环境有关的设置:数据库连接,缓存引擎,加密密钥,会话处理程序。
这样,可以对部分设置进行版本控制(config.xml),并且根据环境,您只有一个小文件。


4
同样,在升级过程中,config.xml将被覆盖,而local.xml将不会被覆盖。最后,在配置解析的开始和结束时,local.xml实际上实际上被加载了两次。由于所有内容都合并在一个配置对象中,因此您在local.xml中放置的任何内容都将覆盖任何模块中的任何其他配置。
Petar Dzhambazov

4
@PetarDzhambazov“在配置解析结束时”并不完全正确/清除,因为来自的值core_config_datalocal.xml之后进行了解析和合并。
benmarks
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.