0

我一直遇到这个问题:客户无法注册、登录和注销,而不会出现致命错误(启用调试)。

致命错误:在第 169 行的 ../public_html/app/code/core/Mage/Reports/Model/Product/Index/Abstract.php 中的非对象上调用成员函数 setCustomerId()

这是第 161 - 180 行的代码片段:

 /**
 * Calculate count of product index items cache
 *
 * @return Mage_Reports_Model_Product_Index_Abstract
 */
public function calculate()
{
    $collection = $this->getCollection()
        ->setCustomerId($this->getCustomerId())
        ->addIndexFilter();


    Mage::getSingleton('catalog/product_visibility')
        ->addVisibleInSiteFilterToCollection($collection);

    $count = $collection->getSize();
    $this->_getSession()->setData($this->_countCacheKey, $count);
    return $this;
}

我所做的,感谢对类似问题的回答:

  • Cookie 设置。
  • 禁用(所有)模块,一个接一个。通过xml,管理后端和删除。还检查是否有任何更新(没有)。
  • 刷新缓存、删除缓存、禁用缓存(会话相同)
  • 将 Var 目录、媒体、下载器以及所有文件夹和文件设置为 777。
  • 感谢magento-cleanup.php,再次设置所有正确的权限。
  • 检查了错误的基本 url 上的数据库,安全和不安全。
  • 是否重写了完整的应用程序目录,从干净的 magento 安装上传。
  • 检查了服务器设置,没有安全模式(有一个 basedir 开放目录)

此外,我被重定向到后端的 404 页面。正确登录后,使用 NoRoute URL。我确实看到并且可以使用后端中的所有内容,包括导航菜单。

我确实使用模板和一些带有插件/模块的自定义。核心文件中没有编码。不确定需要什么信息,所以请询问我是否必须提及一些内容。

经过8个小时的挣扎,我完全迷失了。希望这是您可以帮助我的事情。

4

2 回答 2

1

从调用集合的调试来看,您有:

a)工厂和xml的问题(很可能是某些扩展的config.xml)。在这种情况下,您应该调试 core/config 模型的方法 _getResourceModelFactoryClassName。

https://www.gyazo.com/e7c8ebb26326ce2f1a3c7c26b43812ea

或者

b)以下类不存在:Mage_Reports_Model_Resource_Product_Index_Compared_Collection

https://www.gyazo.com/9c59119fe4b97889cb81d2e8980b55fa

您可以在模型的 getModelInstance 方法中进行检查。请考虑这样一个事实,即通过 echo/var_dump 进行调试时,您将无法获得良好的结果,因为这些方法通常被不同的模型在任何地方调用。

我宁愿建议您从检查以下类的存在开始:Mage_Reports_Model_Resource_Product_Index_Compared_Collection (app/code/core/mage/reports/model/resource/product/index/compared/collection.php)。

接下来,我将检查 (Mage_Reports) 扩展中是否存在模型重写 + 检查所有最近安装的扩展/在这些模块的 config.xml 文件中实现的更改。

希望能帮助到你。

于 2016-03-16T14:33:34.483 回答
0

只需调试并检查此方法返回的内容:

1) get_class($this)

2) get_class($this->getCollection())

在您的情况下,错误意味着以下内容:当前模型没有设置资源模型。代码正在尝试访问集合,但无法访问,因为没有所需的资源模型、资源模型的名称或与此名称对应的类。

于 2016-03-16T09:36:51.147 回答