任何人都可以帮助解决这个Magento错误吗?

时间:2011-02-01 03:24:59

标签: php magento

  

致命错误:调用成员函数   getArea()在非对象中   {}目录/includes/src/Mage_Core_Model_App_Area.php   在第155行

当我安装了我在干净安装的Magento上编写的扩展程序时出现了问题。当移植到开发服务器时它将其关闭,我似乎无法找到它的起源。禁用扩展名不会改变任何内容。随着清除缓存和所有常规Magento打嗝。据我所知,我确保文件权限是正确的。

2 个答案:

答案 0 :(得分:4)

错误中文件的名称

Fatal error: Call to a member function getArea() on a non-object in {directory}/includes/src/Mage_Core_Model_App_Area.php on line 155

表示Magento正在使用编译器模式运行。安装新的 在合规模式下运行的模块可以使Weird Things™发生。我说你的行为有资格作为一个奇怪的事情

打开shell并将目录更改为应用程序的根目录。然后输入

$ cd shell
$ php compiler.php  state

需要从此shell子文件夹运行,因为compiler.php假定在包含一些重要文件时是可怕的。您应该看到类似

的输出
Compiler Status:          Enabled
Compilation State:        Compiled
Collected Files Count:    5602
Compiled Scopes Count:    4

要禁用编译器,请键入

$ php compiler.php disable

您可以通过查看

来查看此脚本是否完成了它的工作
File: includes/config.php

如果此文件中的两行代码被注释,Magento就不会寻找"编译"码。

#define('COMPILER_INCLUDE_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'src');
#define('COMPILER_COLLECT_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR.'stat');

如果他们不是,那么请使用#标记发表评论(启用/停用脚本使用并仅查找##)。

这样做,你的错误应该消失(或至少改为不同的东西,允许进一步的调试)

答案 1 :(得分:3)

/ includes / src /中的路径显示您正在使用magento编译器。每次安装时都必须记住:

  1. 禁用缓存
  2. 禁用编译器
  3. 安装后刷新管理员角色(如果使用ACL)