Раздел реестра Mage "синглтон/администратор/сессия" уже существует
При нажатии на Magento Connect Manager от администратора возникает следующая ошибка: раздел реестра Mage "_singleton/admin/session" уже существует
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
. (если класс модели не найден).
Вам следует проверить, есть ли у вас расширения, перезаписывающие класс сеанса администратора, или вы можете выполнить отладку, начиная с описанных выше методов, чтобы понять, почему вы получаете эту ошибку.
Если у вас включен режим обслуживания, выключите его. очистить кэш. и повторите попытку доступа к менеджеру Magento connect. Надеюсь, это сработает.