Mago chiave del registro di sistema “_singleton/admin/sessione” esiste già
-
12-12-2019 - |
Domanda
Quando si fa clic su Magento Connect Manager da admin, di fronte a questo errore:Mago chiave del registro di sistema "_singleton/admin/sessione" esiste già
Soluzione
Non ho una soluzione, ma sono in grado di spiegare perché/quando questo sta accadendo.
TL;DR: Nel tuo caso il modello admin/session
non è istanziato o non esiste e Mage::getModel('admin/session')
restituisce false
Spiegazione completa
C'è un bug (o meglio ancora un'incoerenza) in Mage::getSingleton
metodo.
E ' stato lì per secoli.
Il metodo simile a questo:
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);
}
Ora diamo un'occhiata al Mage::register
metodo
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;
}
Notare il throwException
.È esattamente quello che tu vedi come messaggio di errore.Se c'è già un valore nel registro di sistema per un certo tasto, si ottiene un errore.
Nel tuo caso si ottiene questo errore, perché c'è già un valore per la chiave _singleton/admin/session
.Questo accade in un caso.
Tornando all' getSingleton
metodo, questo è il bug/incoerenza:
if (!self::registry($registryKey)) {
Questa condizione ritorno true
quando il valore registrato per chiavi specifiche null, false, 0
.
Questo accade quando getModel
restituisce false
.(quando un modello di classe non viene trovato).
Si dovrebbe verificare se si dispone di estensioni di riscrivere la sessione di amministrazione di classe, o è possibile eseguire il debug a partire dai metodi sopra per vedere perché si è sempre questo errore.
Altri suggerimenti
Se si ha la modalità di manutenzione, renderlo spento.chiara cache.e riprovare per accedere a Magento Connect Manager.Spero che funzionerà.