确保您正在编辑您认为正在编辑的配置文件。看看下面的代码
#File: app/code/core/Mage/Core/Model/Config.php
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;
}
这是在您的 local.xml 文件中合并到配置树的代码。添加一些调试代码
public function loadBase()
{
var_dump('Called ' . __METHOD__); //ensure we're being called
$etcDir = $this->getOptions()->getEtcDir();
$files = glob($etcDir.DS.'*.xml');
$this->loadFile(current($files));
while ($file = next($files)) {
var_dump($file); //dump the file path being loaded to the browser
$merge = clone $this->_prototype;
$merge->loadFile($file);
$this->extend($merge);
}
if (in_array($etcDir.DS.'local.xml', $files)) {
$this->_isLocalConfigLoaded = true;
}
exit; //bail out early
return $this;
}
在浏览器中加载您的站点,并观察通过 var_dump 输出的路径。确保正在加载的文件是您认为正在加载的文件。请记住,看起来像 每个 etc 文件夹中的 XML 文件都已加载并合并。
如果路径是您所期望的,接下来添加一些调试代码以输出正在加载的 XML 文件的内容。
public function loadBase()
{
var_dump('Called ' . __METHOD__ . ''); //ensure we're being called
$etcDir = $this->getOptions()->getEtcDir();
$files = glob($etcDir.DS.'*.xml');
$this->loadFile(current($files));
while ($file = next($files)) {
header('Content-Type: text/plain'); //so the browser renders it as plain text
echo file_get_contents($file); //dump the contents of the file being loaded to the browser
$merge = clone $this->_prototype;
$merge->loadFile($file);
$this->extend($merge);
}
if (in_array($etcDir.DS.'local.xml', $files)) {
$this->_isLocalConfigLoaded = true;
}
exit; //bail out early
return $this;
}
如果这些文件中的数据库信息是正确的,那么您的系统已被定制和/或以某种方式被黑客入侵,从而有代码调用另一个数据库服务器。
如果是这种情况,您需要安装诸如 xDebug 之类的东西来获得一些不错的错误报告。这将让您找到引发错误的确切代码,此时您可以将其追溯到获取连接信息的位置。
祝你好运。