Fixed Class XF\Authentication\IPBoard40x does not exist


Well-known member
I installed the latest version of XF1 and imported my IPBoard 4.2 database. All installed and imported without error. I then Upgraded to XF2, and again no errors. When I log in as the administrator (created during install), no problem.

But all of the imported logins are getting this error:

LogicException: Class XF\Authentication\IPBoard40x does not exist src/XF/Container.php:267
Having this problem too in v2.0.4. Converted from IPB 4.2 to XF1, and then from XF1 to XF 2.0.4. Whenever anyone tries to login with their old IPB account, this error happens:

  • LogicException: Class XF\Authentication\IPBoard40x does not exist
  • src/XF/Container.php:267
Stack trace
#0 src/XF/App.php(1312): XF\Container->createObject('XF\\Authenticati...', Array)
#1 src/XF/Container.php(228): XF\App->XF\{closure}('XF\\Authenticati...', Array, Object(XF\Container))
#2 src/XF/App.php(2455): XF\Container->create('auth', 'XF\\Authenticati...', Array)
#3 src/XF/Entity/UserAuth.php(54): XF\App->auth('XF\\Authenticati...', Array)
#4 src/XF/Entity/UserAuth.php(22): XF\Entity\UserAuth->getAuthenticationHandler()
#5 src/XF/Service/User/Login.php(122): XF\Entity\UserAuth->authenticate('aaf98b8bb2eeaba')
#6 src/XF/Pub/Controller/Login.php(83): XF\Service\User\Login->validate('aaf98b8bb2eeaba', NULL)
#7 src/XF/Mvc/Dispatcher.php(249): XF\Pub\Controller\Login->actionLogin(Object(XF\Mvc\ParameterBag))
#8 src/XF/Mvc/Dispatcher.php(88): XF\Mvc\Dispatcher->dispatchClass('XF:Login', 'Login', 'html', Object(XF\Mvc\ParameterBag), '', Object(XF\Pub\Controller\Login), NULL)
#9 src/XF/Mvc/Dispatcher.php(41): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#10 src/XF/App.php(1891): XF\Mvc\Dispatcher->run()
#11 src/XF.php(328): XF\App->run()
#12 index.php(13): XF::runApp('XF\\Pub\\App')
#13 {main}

edit: I managed to fix it. In the xf_user_authenticate table, I replaced every instance of XenForo_Authentication_IPBoard40x in the scheme_class column with XF:IpsForums4x. Not sure why it hasn't happened automatically during the upgrade/conversion.
Last edited: