Magento 1.3.2.2:致命错误:在非对象上调用成员函数getUsername()


Magento 1.3.2.2: Fatal error: Call to a member function getUsername() on a non-object

在Magento 1.3.2.2中,我们得到了一个致命错误:

Fatal error: Call to a member function getUsername() on a non-object in 
.../app/design/adminhtml/default/default/template/page/header.phtml on line 31

在订单确认过程中,Magento应该转换到成功页面。但我们却得到了那个错误。

显示一个Admin标头,其中包含此错误。如果我刷新,我会进入成功页面,如果一切正常,我应该被带到那里。

发生此错误是因为第31行的header.phtml具有条目:

$this->getUser()->getUsername();

但是getUser()方法没有返回有效的对象。这个方法非常简单,看起来像这样:

return Mage::getSingleton('admin/session')->getUser();

因此,您应该只调试一个地方:app/code/core/Mage/Admin/Model/Session.php只有一个方法setUser()对象到会话

public function login($username, $password, $request = null) {
    ...
    $this->setUser($user);

如果用户对象加载并且有效,则意味着您自己的会话有问题:

  • 检查cookie的设置方式
  • Cookie路径和创建时间

如果不进行调试,远程查找问题并不容易。所以我祝你成功。

我遇到了同样的错误,并按如下方式解决了它:

  1. 将var文件夹备份为(var back)
  2. 创建一个新的var目录
  3. 将locks文件夹备份为(locks back){如果可用}
  4. 创建locks目录

刷新URL