I don't have a solution, but I can explain why/when this is happening.
TL;DR: In your case the model admin/session
is not instantiated or does not exist and Mage::getModel('admin/session')
returns false
Full explanation
There is a bug (or better yet an inconsistency) in the Mage::getSingleton
method.
It has been there for ages.
The method looks like this:
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);
}
Now let's take a look at the Mage::register
method
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;
}
Notice the throwException
. It is exactly what you see as error message. If there is already a value in the registry for a certain key, you get an error.
In your case you get this error because there is already a value for key _singleton/admin/session
. This happens in one case.
Going back to the getSingleton
method, this is the bug/inconsistency:
if (!self::registry($registryKey)) {
This condition will return true
when the value you registered for a specific key is null, false, 0
.
This happens when getModel
returns false
. (when a model class is not found).
You should check if you have extensions rewriting the admin session class, or you can debug starting from the methods above to see why you are getting this error.
It's most likely caoused by some extension you have installed.
Try to disable the new extension you installed and disable the compiler. Then re-compile again.
You can do this from the admin panel or if it's not accessible try those commands:
php -f shell/compiler.php disable
php -f shell/compiler.php clear
php -f shell/compiler.php compile
You can also diable the module in app\etc\modules
directory.
Best Answer
It is possible that u have this module installed over composer + copied them manually on your ftp server? Because that can cause this. Make sure u only have 1 instance of the module installed. In magento 2 this is the app/code folder and the vendor/ folder. Only 1 of the 2 can be used at the same time for the same module.
Try deleting the app/code (not sure what this is in magento 1x versions) module directory.