Caching Magento中不允许序列化?

Caching Magento中不允许序列化?,caching,magento,Caching,Magento,在Magento中启用缓存时,出现以下异常: 不允许序列化“Mage\u Core\u Model\u Layout\u元素” 异常发生在app/code/core/Mage/Page/Block/Template/Links.php,在线: return parent::getCacheKeyInfo() + array( 'links' => base64_encode(serialize($links)), 'name' => $

在Magento中启用缓存时,出现以下异常:

不允许序列化“Mage\u Core\u Model\u Layout\u元素”

异常发生在
app/code/core/Mage/Page/Block/Template/Links.php
,在线:

return parent::getCacheKeyInfo() + array(
            'links' => base64_encode(serialize($links)),
            'name' => $this->getNameInLayout()
        )
我使用的是MagentoEnterprise1.10和PHP5.3


有人能告诉我问题出在哪里吗?

在布局文件中,文本后不应该有空的
,文本前不应该有空的
。如果你不需要它,只需删除标签就行了

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

我用过:

试一试{
序列化($links);
}捕获(例外$e){
Mage::log($links);
死亡
}

为了找出那些空标签的确切布局,并在删除这些空标签后,它修复了问题,然后删除了上面的代码:-)

在客户网站上看到了这个问题。以上所有的解决方案都不适合我。在谷歌搜索了很多错误之后,它似乎与JM或JoomlArt主题/扩展相关。 代码写得非常糟糕。例如,您将在这些主题中发现的一些内容包括: 在模板中声明php类, 在模板中设置全局变量, 将数据从模板设置为超全局, 提供翻译文件,但不在translate函数的模板中包装大多数文本字符串

我从他们的支持人员那里得到了1个回复,基本上是建议关闭错误报告来解决问题

我在app/design/frontend/default/jm_adamite/template/catalog/navigation/tops.phtml中发现了问题 有一行将$this设置为$\u会话。我把它注释掉,错误就消失了。没有别的东西坏了。其他地方使用的变量的grep结果为0。如果您安装了其中一个JM扩展,或者使用了其中一个主题,我首先会怀疑
祝你好运

当我在挖掘后调用getCategoryUrl函数尝试序列化类别时,这个问题发生在我身上。我发现set\u urlModel对象无法序列化,因为它包含Mage\u Core\u Model\u layou\u元素,所以在序列化对象之前检查它是否有该\u urlModel财产