Magento不允许序列化?

时间:2011-06-21 09:09:09

标签: caching magento

当我打开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。

谁能告诉我这是什么问题?

4 个答案:

答案 0 :(得分:8)

您的布局文件中不应包含空after_textbefore_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)

当我在挖掘之后调用getCategoryUrl函数尝试序列化类别时发生了这个问题我发现那个 _urlModel 对象无法序列化,因为它包含 Mage_Core_Model_Layout_Element 所以在序列化对象之前检查它是否具有_urlModel属性

enter image description here