2011-06-21 20 views
5

当我在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。

谁能告诉我问题是什么?

回答

8

您的布局文件中不应包含空的after_textbefore_text标记。如果你不需要它,只需删除标签。

如果没有帮助,请在app/code/core/Mage/Page/Block/Template/Links.php文件中的第150行之前转储$links变量,并且您将看到一个包含阵列的数组。所有的键和值都应该是字符串或整数,而不是对象。作为对象的数组值的键将告诉你从布局文件中删除哪个标签。

+0

真棒之前不能被序列_urlModel对象!谢啦 – RIK

1

太棒了@vsushkov

我用: try{ serialize($links); } catch(Exception $e){ Mage::log($links); die; } 找出确切的布局,我们不得不那些空标签和删除这些空标签之后,它解决了这一问题,那么上面的代码中删除:-)

0

望见一个客户这个问题现场。上述解决方案都不适合我。经过大量的搜索错误,它似乎与JM或JoomlArt主题/扩展有关。代码写得极其糟糕。例如,在这些主题中可以找到的一些内容包括: 在模板中声明php类, 在模板内设置全局变量, 从模板中设置数据到超大字盘中, 提供翻译文件,但不包含模板中的大多数文本字符串在翻译功能

我发现他们的支持人员的一个响应,基本上建议关闭错误报告来解决问题。

我发现我的问题在app/design/frontend/default/jm_adamite/template/catalog/navigation/tops.phtml 有一行将$ this设置为$ _SESSION。我评论说,错误消失了。没有其他东西被打破。在其他地方使用该变量的grep有0个结果。如果您已经安装或使用他们的主题之一,这些JM扩展之一,我会试图序列类别挖后调用getCategoryUrl功能后,我发现,当怀疑第一 好运

0

这个问题发生在我身上设置,因为它包含Mage_Core_Model_Layout_Element所以序列化对象检查它是否还具有_urlModel财产

enter image description here

相关问题