Раздел реестра Mage "синглтон/администратор/сессия" уже существует


При нажатии на Magento Connect Manager от администратора возникает следующая ошибка: раздел реестра Mage "_singleton/admin/session" уже существует

Author: Rahul Kumar Das, 2015-01-03

2 answers

У меня нет решения, но я могу объяснить, почему/когда это происходит.

TL;ДР: В вашем случае модель admin/session не создана или не существует, и Mage::getModel('admin/session') возвращает false

Полное объяснение

В методе Mage::getSingleton есть ошибка (или, еще лучше, несоответствие).
Он был там целую вечность.

Метод выглядит следующим образом:

public static function getSingleton($modelClass='', array $arguments=array())
{
    $registryKey = '_singleton/'.$modelClass;
    if (!self::registry($registryKey)) {
        self::register($registryKey, self::getModel($modelClass, $arguments));
    }
    return self::registry($registryKey);
} 

Теперь давайте взглянем на Mage::register метод

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;
}

Обратите внимание на throwException. Это именно то, что вы видите как сообщение об ошибке. Если в реестре уже есть значение для определенного ключа, вы получите сообщение об ошибке.
В вашем случае вы получаете эту ошибку, потому что для ключа _singleton/admin/session уже есть значение. Это происходит в одном случае.
Возвращаясь к методу getSingleton, это ошибка/несоответствие:

 if (!self::registry($registryKey)) {

Это условие вернет true, когда значение, которое вы зарегистрировали для определенного ключа, равно null, false, 0.
Это происходит, когда getModel возвращает false. (если класс модели не найден).

Вам следует проверить, есть ли у вас расширения, перезаписывающие класс сеанса администратора, или вы можете выполнить отладку, начиная с описанных выше методов, чтобы понять, почему вы получаете эту ошибку.

 6
Author: Marius, 2015-01-07 07:26:27

Если у вас включен режим обслуживания, выключите его. очистить кэш. и повторите попытку доступа к менеджеру Magento connect. Надеюсь, это сработает.

 0
Author: Satya, 2015-08-05 22:30:03