当我打开Magento中的缓存时,我得到以下异常:
不允许序列化'Mage_Core_Model_Layout_Element'
在app/code/core/Mage/Page/Block/Template/Links.php
,在线:
return parent::getCacheKeyInfo() + array(
'links' => base64_encode(serialize($links)),
'name' => $this->getNameInLayout()
)
我使用的是Magento Enterprise 1.10和PHP 5.3。
谁能告诉我这是什么问题?
答案 0 :(得分:8)
您的布局文件中不应包含空after_text
或before_text
个标记。如果您不需要它,只需删除标签即可。
如果无效,请在app / code / core / Mage / Page / Block / Template / Links.php文件中的第150行之前转储$links
变量,您将看到一个包含数组的数组在里面。所有键和值都应该是字符串或整数,而不是对象。作为对象的数组值的键将告诉您从布局文件中删除哪个标记。
答案 1 :(得分:1)
很棒@vsushkov。
我用过:
try{
serialize($links);
} catch(Exception $e){
Mage::log($links);
die;
}
找出我们有空标签的确切布局,并在删除那些空标签后,修复了问题,然后删除了上面的代码: - )
答案 2 :(得分:0)
在客户端网站上看到此问题。以上解决方案都不适合我。经过大量的谷歌搜索错误后,它似乎与JM或JoomlArt主题/扩展相关。 代码编写得非常糟糕。例如,您将在这些主题中找到的一些内容包括: 在模板中声明php类, 在模板中设置全局变量, 从模板中将数据设置为超全局 提供翻译文件,但未在翻译函数中将大多数文本字符串包装在模板中
我发现其支持人员的回复基本上建议关闭错误报告以解决问题。
我在app / design / frontend / default / jm_adamite / template / catalog / navigation / tops.phtml中发现了我的问题 有一行将$ this设置为$ _SESSION。我评论了它,错误消失了。没有其他东西出现破裂。在其他地方使用的变量的grep有0个结果。如果您安装了其中一个JM扩展或使用其中一个主题,我会先怀疑 祝你好运
答案 3 :(得分:0)