1

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

我该如何解决这个问题?

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

4 回答 4

3

乌斯曼说的是对的,但谜团是怎么会发生这种情况?

她一定是在使用 AW 的扩展,它有一个观察者,<controller_action_predispatch> 它会调用 class awall/feed_extensions, typeSingleton 这就是为什么它会创建名称为注册表的原因_singleton/awall/feed_extensions 要调试它,我们可以使用 php 的调试回溯。把这一行放在你的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]

因为您现在无法打开管理面板,所以您需要直接从数据库中更改它使用此查询来查看您是否打开了日志设置:

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)

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

insert into core_config_data (scope, scope_id, path, value) values ('default', 0, 'dev/log/active', 1);

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

于 2012-08-01T14:40:45.030 回答
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 然后登录到管理员您的管理员现在可以工作。

然后

转到系统->工具->编译禁用它。

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

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

然后检查它是否工作..

于 2013-07-12T07:59:34.873 回答
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;
}

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

于 2012-08-01T10:04:58.590 回答
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 -> var -> cache 并删除“cache”文件夹中的所有“mage-*”文件夹(注意:我保留了 cdn.cache 文件)。

于 2015-07-29T18:29:03.467 回答