Don*_*ggs 4 database connection caching magento
我已将整个www目录从我们的Web服务器复制到本地工作站.我想让Magento连接到本地数据库.是的,我更改了'magento/app/etc/local.xml'文件中的连接字符串值.我已经验证了大约一百次它被改变了.在你告诉我它被缓存之前,我已经删除了整个'magento/var/cache'目录,只是为了安全,并且在www目录中为我们的'secret_password'添加了所有文件.以下是我的local.xml文件的摘录.
<host><![CDATA[localhost]]></host>
<username><![CDATA[root]]></username>
<password><![CDATA[root]]></password>
<dbname><![CDATA[dev_xarisma]]></dbname>
Run Code Online (Sandbox Code Playgroud)
我在我的笔记本电脑上试过这个,并且确实发现缓存是个问题.花了我几个小时来搞清楚.但是我终于抛弃了'Varien_Db_Adapter_Pdo_Mysql'对象,就在那时我看到它获得的值不是我在'local.xml'文件中设置的值; 看下面的部分转储.
[_config:protected] => Array
(
[host] => localhost
[username] => root
[password] => (*secret_pass_you_cant_see*)
[dbname] => production_xarisma
Run Code Online (Sandbox Code Playgroud)
我终于想通过在WWW目录中获取我们的强密码来缓存旧的登录凭据.我很惊讶地发现magento/var/cache文件中的一堆文件.我删除了有问题的文件,这解决了我的笔记本电脑上的问题.但是,它不能在工作站上运行.我删除了整个var目录,行为仍在继续.我甚至多次重启我的工作站,以防它被Apache缓存,但没有运气.
笔记本电脑和工作站都运行Ubuntu 31.10,使用Apache2,当前的mySql,两者都没有什么特别之处.如果你想知道为什么我会这么疯狂地"将生产服务器克隆到我的工作站"程序,这是因为我们试图解决仅在生产中的问题.是的,我检查了所有甚至看起来相关的文章.先感谢您.
好的,这花了我两天的时间来追踪.但我发现的是一个bug或一个功能,我不知道.
问题是'magento/app/etc'目录中有一个ANOTHER文件,它在'local.xml'文件中覆盖了正确的数据库连接参数.该文件名为"localOLD.xml".显然,有人想要备份我们的数据库设置以确保安全; 一个好主意.但显然,Magento正在阅读那个文件,而不是'local.xml'.
我真的很惊讶它一删除该文件就开始工作了.事实上,我不相信.所以我制作了一个'local.xml'的副本,称为'localOLD.xml',为连接参数输入了一些测试值,Magento尝试使用它们.
这是一个错误还是一个功能?任何人?
当这种情况发生时,它总是一种痛苦.
首先 - 您确定生产服务器正在使用文件系统进行缓存吗?许多生产系统被设置为缓存到其他东西,如redis,memcache等.通过管理UI或n98-magerun之类的工具(如果可能)清除缓存总是一个好主意.
第二 - 你确定要删除正确的缓存文件夹吗?如果Magento var由于PHP权限而无法写入文件夹,则会将其缓存文件存储在系统临时文件夹中.
这个方法中的一些调试代码
#File: app/code/core/Mage/Core/Model/Config/Options.php
public function getVarDir()
{
//$dir = $this->getDataSetDefault('var_dir', $this->getBaseDir().DS.'var');
$dir = isset($this->_data['var_dir']) ? $this->_data['var_dir']
: $this->_data['base_dir'] . DS . self::VAR_DIRECTORY;
if (!$this->createDirIfNotExists($dir)) {
$dir = $this->getSysTmpDir().DS.'magento'.DS.'var';
if (!$this->createDirIfNotExists($dir)) {
throw new Mage_Core_Exception('Unable to find writable var_dir');
}
}
return $dir;
}
Run Code Online (Sandbox Code Playgroud)
应该揭示Magento从哪里加载它的文件缓存数据.
var_dump($dir);
return $dir;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19315 次 |
| 最近记录: |