我刚刚将我的Magento网站移动到了亚马逊EC2,但是继续获得"连接到Redis后失败了#2;错误。我试图从app / etc / local.xml中删除redis配置,但仍然会收到该错误。
我还尝试直接从core_cache_option表中禁用所有缓存选项。我不知道如何清理已经缓存的文件。 var / cache文件夹下没有预期的缓存文件,我已尝试从redis-cli命令提示符中刷新,但仍然会出现此错误。
知道我还应该尝试什么?
<cache>
<backend_options>
<server><![CDATA[/var/tmp/_cache.sock]]></server>
<port><![CDATA[0]]></port>
<persistent><![CDATA[]]></persistent>
<database><![CDATA[0]]></database>
<password><![CDATA[]]></password>
<connect_retries><![CDATA[1]]></connect_retries>
<read_timeout><![CDATA[10]]></read_timeout>
<automatic_cleaning_factor><![CDATA[0]]></automatic_cleaning_factor>
<compress_data><![CDATA[1]]></compress_data>
<compress_tags><![CDATA[1]]></compress_tags>
<compress_threshold><![CDATA[20480]]></compress_threshold>
<compression_lib><![CDATA[gzip]]></compression_lib>
<use_lua><![CDATA[0]]></use_lua>
</backend_options>
<backend><![CDATA[Cm_Cache_Backend_Redis]]></backend>
</cache>
答案 0 :(得分:11)
鉴于EC2实例是短暂的,你应该能够重新生成实例,对吧?如果那不是一个选择 -
首先,检查app/etc/
是否有其他 XML文件。 Magento将解析它在此文件夹中找到的任何 XML文件。我见过像下面这样的旅行的人
$ ls app/etc/*.xml
local.xml
local.backup.xml
Magento会解析local.xml
和local.backup.xml
,备份值会覆盖local.xml
中的新值。另外,请确保您使用的是您认为自己的local.xml
。 Magento在以下位置加载本地配置。添加一些临时调试以确保它正在执行您认为正在执行的操作。
#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)) {
var_dump($file);
$merge = clone $this->_prototype;
$merge->loadFile($file);
$this->extend($merge);
}
if (in_array($etcDir.DS.'local.xml', $files)) {
$this->_isLocalConfigLoaded = true;
}
return $this;
}
其次,清除缓存后,请确保Magento重新加载配置。添加一些临时调试到
#File: app/code/core/Mage/Core/Model/Config.php
public function init($options=array())
{
$this->setCacheChecksum(null);
$this->_cacheLoadedSections = array();
$this->setOptions($options);
$this->loadBase();
$cacheLoad = $this->loadModulesCache();
if ($cacheLoad) {
var_dump("Loaded Config from Cache");
return $this;
}
else
{
var_dump("Reloading configuration");
}
$this->loadModules();
$this->loadDb();
$this->saveCache();
return $this;
}
最后,如果您怀疑问题是基于文件的缓存未清除,请删除
中的一些调试代码#File: app/code/core/Mage/Core/Model/Config/Options.php
public function getCacheDir()
{
//$dir = $this->getDataSetDefault('cache_dir', $this->getVarDir().DS.'cache');
$dir = $this->_data['cache_dir'];
$this->createDirIfNotExists($dir);
var_dump($dir);
return $dir;
}
这将让你知道Magento读取的缓存目录 - 如果Magento无法读取本地var
,它将弹出到根级/var/
文件夹。