Mage注册表项“_singleton / awall / feed_extensions”已经存在

时间:2012-08-01 09:54:35

标签: magento

当我加载管理面板时,我收到了此错误。

我该如何解决这个问题?

There has been an error processing your request

Mage registry key "_singleton/awall/feed_extensions" already exists

Trace:
#0 /var/www/magento_upgrade/app/Mage.php(222): Mage::throwException('Mage registry k...')
#1 /var/www/magento_upgrade/app/Mage.php(476): Mage::register('_singleton/awal...', false)
#2 /var/www/magento_upgrade/app/code/core/Mage/Core/Model/App.php(1316): Mage::getSingleton('awall/feed_exte...')
#3 /var/www/magento_upgrade/app/Mage.php(447): Mage_Core_Model_App->dispatchEvent('controller_acti...', Array)
#4 /var/www/magento_upgrade/app/code/core/Mage/Core/Controller/Varien/Action.php(528): Mage::dispatchEvent('controller_acti...', Array)
#5 /var/www/magento_upgrade/app/code/core/Mage/Adminhtml/Controller/Action.php(160): Mage_Core_Controller_Varien_Action->preDispatch()
#6 /var/www/magento_upgrade/app/code/core/Mage/Core/Controller/Varien/Action.php(408): Mage_Adminhtml_Controller_Action->preDispatch()
#7 /var/www/magento_upgrade/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('index')
#8 /var/www/magento_upgrade/app/code/core/Mage/Core/Controller/Varien/Front.php(176): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#9 /var/www/magento_upgrade/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#10 /var/www/magento_upgrade/app/Mage.php(683): Mage_Core_Model_App->run(Array)
#11 /var/www/magento_upgrade/index.php(87): Mage::run('', 'store')
#12 {main}

4 个答案:

答案 0 :(得分:3)

乌斯曼所说的是对的,但神秘的是这怎么可能发生?

她必须使用AW的扩展程序,它在[{1}}中有一个观察者 它会调用课程<controller_action_predispatch>,输入awall/feed_extensions 这就是它将创建名为Singleton的注册表的原因 要调试它,我们可以使用php的调试回溯。 将此行放在_singleton/awall/feed_extensions下的Mage.php

public static function registry

使用这个我们可以回溯谁调用注册表(除了观察者),因为在正常情况下不应该有任何代码直接调用注册表(public static function registry($key) { $str = Varien_Debug::backtrace(true, false); if(!empty($str)){ Mage::log($str); } if (isset(self::$_registry[$key])) { return self::$_registry[$key]; } return null; } )所以它应该从未被调用过多次。 它会将结果记录在_singleton/awall/feed_extensions

确保您已在管理面板中启用了日志设置:

[MagentosRoot]/var/log/system.log

由于您目前无法打开管理面板,因此需要直接从数据库进行更改 使用此查询查看您是否已打开日志设置:

System > Configuration > Developer > Log Settings > Enabled [Yes]

value = 1表示您已打开它。 如果您的数据库中没有该值,只需插入它:

mysql> select * from core_config_data where path like 'dev/log/active';
+-----------+---------+----------+----------------+-------+
| config_id | scope   | scope_id | path           | value |
+-----------+---------+----------+----------------+-------+
|       244 | default |        0 | dev/log/active | 1     |
+-----------+---------+----------+----------------+-------+
1 row in set (0.00 sec)

如果数据库中的值为0,则将其更改为1.

答案 1 :(得分:0)

这是因为您已经注册了相同的密钥名称_singleton/awall/feed_extensions。正如你在Mage.php中看到的那样

public static function register($key, $value, $graceful = false)
{
    if (isset(self::$_registry[$key])) {
        if ($graceful) {
            return;
        }
        self::throwException('Mage registry key "'.$key.'" already exists');
    }
    self::$_registry[$key] = $value;
}

所以尝试使用其他名称注册。

答案 2 :(得分:0)

对我来说,它只是简单地删除与AheadWorks相关的所有文件(它们上的“AW”),并通过将每个文件放在相应的文件夹上来仔细重新安装。

在刷新管理页面之前,请找到Mage_Compiler.xml,并确保有一行<active>false</active>

有点令人生畏。

否则,试试这个:

首先转到app / etc / modules / aw_all.xml 将true更改为false

首先转到app / etc / modules / aw_blog.xml 将true更改为false 然后登录管理员,管理员将立即工作。

然后

转到system-&gt; tools-&gt;编译 禁用它。

现在 首先转到app / etc / modules / aw_all.xml 将false更改为true

转到app / etc / modules / aw_blog.xml 将false更改为true

然后检查它是否正常工作..

答案 3 :(得分:0)

我迟到了这个问题,但我昨晚遇到了同样的问题,希望这个答案可以帮助其他人(这个错误让我花了一天时间)。我正在使用带有Mage World扩展的Magento 1.9应用程序。在我的本地环境中,我切换分支以处理其他事情,但我不断获得通用的Magento错误页面。看一下var / log / system.xml,我看到了:

a:5:{i:0;s:70:"Mage registry key "_singleton/onestepcheckout/observer" already exists";i:1;s:1691:"#0 C:\Sites\myintent-shop\app\Mage.php(223): Mage::throwException('Mage registry k...')
#1 C:\Sites\myintent-shop\app\Mage.php(477): Mage::register('_singleton/ones...', false)
#2 C:\Sites\myintent-shop\app\code\core\Mage\Core\Model\App.php(1316): Mage::getSingleton('onestepcheckout...')
#3 C:\Sites\myintent-shop\app\Mage.php(448): Mage_Core_Model_App->dispatchEvent('controller_acti...', Array)
#4 C:\Sites\myintent-shop\app\code\core\Mage\Core\Controller\Varien\Action.php(339): Mage::dispatchEvent('controller_acti...', Array)
#5 C:\Sites\myintent-shop\app\code\core\Mage\Cms\Helper\Page.php(113): Mage_Core_Controller_Varien_Action->generateLayoutBlocks()
#6 C:\Sites\myintent-shop\app\code\core\Mage\Cms\Helper\Page.php(52): Mage_Cms_Helper_Page->_renderPage(Object(Mage_Cms_IndexController), 'home')
#7 C:\Sites\myintent-shop\app\code\core\Mage\Cms\controllers\IndexController.php(45): Mage_Cms_Helper_Page->renderPage(Object(Mage_Cms_IndexController), 'home')
#8 C:\Sites\myintent-shop\app\code\core\Mage\Core\Controller\Varien\Action.php(418): Mage_Cms_IndexController->indexAction()
#9 C:\Sites\myintent-shop\app\code\core\Mage\Core\Controller\Varien\Router\Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('index')
#10 C:\Sites\myintent-shop\app\code\core\Mage\Core\Controller\Varien\Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#11 C:\Sites\myintent-shop\app\code\core\Mage\Core\Model\App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#12 C:\Sites\myintent-shop\app\Mage.php(684): Mage_Core_Model_App->run(Array)
#13 C:\Sites\myintent-shop\index.php(87): Mage::run('', 'store')
#14 {main}";s:3:"url";s:1:"/";s:11:"script_name";s:10:"/index.php";s:4:"skin";s:7:"default";}

原来我必须清除缓存目录。最简单的方法是转到root - &gt; var - &gt;缓存并删除“cache”文件夹中的所有“mage- *”文件夹(注意:我保留了cdn.cache文件)。