?
avatar toivo
toivo
29 Mar 2021

Steps to reproduce the issue

Download Beta8-dev full package of 29 March: https://developer.joomla.org/nightlies/Joomla_4.0.0-beta8-dev-Development-Full_Package.zip
Expand and install.
Remove the installation folder.
Rename htaccess.txt to .htaccess.
Go to the site and the back end.

Expected result

No errors displayed.

Actual result

Fatal error: Trait "Joomla\Plugin\System\Webauthn\PluginTraits\AjaxHandler" not found in C:\www\joomla4\plugins\system\webauthn\webauthn.php on line 34

System information (as much as possible)

Windows 10 with Wampserver 3.2.4
Apache 2.4.36c
MySQL 8.0.23
PHP 8.0.2

Additional comments

Stack trace from back end

[29-Mar-2021 09:21:54 UTC] PHP Fatal error:  Trait "Joomla\Plugin\System\Webauthn\PluginTraits\AjaxHandler" not found in C:\www\joomla4\plugins\system\webauthn\webauthn.php on line 34
[29-Mar-2021 09:21:54 UTC] PHP Stack trace:
[29-Mar-2021 09:21:54 UTC] PHP   1. {main}() C:\www\joomla4\administrator\index.php:0
[29-Mar-2021 09:21:54 UTC] PHP   2. require_once() C:\www\joomla4\administrator\index.php:32
[29-Mar-2021 09:21:54 UTC] PHP   3. Joomla\CMS\Application\AdministratorApplication->execute() C:\www\joomla4\administrator\includes\app.php:63
[29-Mar-2021 09:21:54 UTC] PHP   4. Joomla\CMS\Application\AdministratorApplication->doExecute() C:\www\joomla4\libraries\src\Application\CMSApplication.php:266
[29-Mar-2021 09:21:54 UTC] PHP   5. Joomla\CMS\Application\AdministratorApplication->initialiseApp($options = ['language' => NULL]) C:\www\joomla4\libraries\src\Application\AdministratorApplication.php:165
[29-Mar-2021 09:21:54 UTC] PHP   6. Joomla\CMS\Application\AdministratorApplication->initialiseApp($options = ['language' => 'en-GB']) C:\www\joomla4\libraries\src\Application\AdministratorApplication.php:354
[29-Mar-2021 09:21:54 UTC] PHP   7. Joomla\CMS\Plugin\PluginHelper::importPlugin($type = 'system', $plugin = *uninitialized*, $autocreate = *uninitialized*, $dispatcher = *uninitialized*) C:\www\joomla4\libraries\src\Application\CMSApplication.php:714
[29-Mar-2021 09:21:54 UTC] PHP   8. Joomla\CMS\Plugin\PluginHelper::import($plugin = class stdClass { public $type = 'system'; public $name = 'webauthn'; public $params = '{}'; public $id = 183 }, $autocreate = TRUE, $dispatcher = class Joomla\Event\Dispatcher { protected $events = []; protected $listeners = ['session.start' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onTableObjectCreate' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onTableBeforeStore' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onTableAfterStore' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onTableBeforeDelete' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onTableSetNewTags' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onTableAfterReset' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onTableAfterLoad' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onBeforeBatch' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onContentAfterSave' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onContentAfterDelete' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onContentChangeState' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onApplicationAfterSave' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onExtensionAfterInstall' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onExtensionAfterUninstall' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onExtensionAfterUpdate' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onExtensionAfterSave' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onExtensionAfterDelete' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onUserAfterSave' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onUserAfterDelete' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onUserAfterSaveGroup' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onUserAfterDeleteGroup' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onUserAfterLogin' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onUserLoginFailure' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onUserLogout' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onUserAfterRemind' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAfterCheckin' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAfterLogPurge' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAfterLogExport' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAfterPurge' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAfterDispatch' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onJoomlaAfterUpdate' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAfterInitialise' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onContentPrepareForm' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onContentPrepareData' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAfterRespond' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onBeforeCompileHead' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAjaxDebug' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAfterDisconnect' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onContentNormaliseRequestData' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onContentAfterTitle' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onContentBeforeDisplay' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onContentAfterDisplay' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onContentPrepare' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onPrepareFinderContent' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onFinderResult' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAfterRender' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onUserBeforeSave' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAjaxSendAlways' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAjaxSendNever' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAjaxSendOnce' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAjaxSendStats' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onGetStatsData' => class Joomla\Event\ListenersPriorityQueue { ... }] }) C:\www\joomla4\libraries\src\Plugin\PluginHelper.php:193
[29-Mar-2021 09:21:54 UTC] PHP   9. Joomla\CMS\Application\AdministratorApplication->bootPlugin($plugin = 'webauthn', $type = 'system') C:\www\joomla4\libraries\src\Plugin\PluginHelper.php:235
[29-Mar-2021 09:21:54 UTC] PHP  10. Joomla\CMS\Application\AdministratorApplication->loadExtension($type = 'Joomla\\CMS\\Extension\\PluginInterface', $extensionName = 'webauthn:system', $extensionPath = 'C:\\www\\joomla4/plugins/system/webauthn') C:\www\joomla4\libraries\src\Extension\ExtensionManagerTrait.php:94
[29-Mar-2021 09:21:54 UTC] PHP  11. Joomla\CMS\Application\AdministratorApplication->loadPluginFromFilesystem($plugin = 'webauthn', $type = 'system') C:\www\joomla4\libraries\src\Extension\ExtensionManagerTrait.php:160
[29-Mar-2021 09:21:54 UTC] PHP  12. require_once() C:\www\joomla4\libraries\src\Extension\ExtensionManagerTrait.php:219

Stack trace from front end

[29-Mar-2021 09:21:54 UTC] PHP Fatal error:  Trait "Joomla\Plugin\System\Webauthn\PluginTraits\AjaxHandler" not found in C:\www\joomla4\plugins\system\webauthn\webauthn.php on line 34
[29-Mar-2021 09:21:54 UTC] PHP Stack trace:
[29-Mar-2021 09:21:54 UTC] PHP   1. {main}() C:\www\joomla4\index.php:0
[29-Mar-2021 09:21:54 UTC] PHP   2. require_once() C:\www\joomla4\index.php:32
[29-Mar-2021 09:21:54 UTC] PHP   3. Joomla\CMS\Application\SiteApplication->execute() C:\www\joomla4\includes\app.php:63
[29-Mar-2021 09:21:54 UTC] PHP   4. Joomla\CMS\Application\SiteApplication->doExecute() C:\www\joomla4\libraries\src\Application\CMSApplication.php:266
[29-Mar-2021 09:21:54 UTC] PHP   5. Joomla\CMS\Application\SiteApplication->initialiseApp($options = *uninitialized*) C:\www\joomla4\libraries\src\Application\SiteApplication.php:224
[29-Mar-2021 09:21:54 UTC] PHP   6. Joomla\CMS\Application\SiteApplication->initialiseApp($options = ['language' => 'en-GB']) C:\www\joomla4\libraries\src\Application\SiteApplication.php:709
[29-Mar-2021 09:21:54 UTC] PHP   7. Joomla\CMS\Plugin\PluginHelper::importPlugin($type = 'system', $plugin = *uninitialized*, $autocreate = *uninitialized*, $dispatcher = *uninitialized*) C:\www\joomla4\libraries\src\Application\CMSApplication.php:714
[29-Mar-2021 09:21:54 UTC] PHP   8. Joomla\CMS\Plugin\PluginHelper::import($plugin = class stdClass { public $type = 'system'; public $name = 'webauthn'; public $params = '{}'; public $id = 183 }, $autocreate = TRUE, $dispatcher = class Joomla\Event\Dispatcher { protected $events = []; protected $listeners = ['session.start' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onTableObjectCreate' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onTableBeforeStore' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onTableAfterStore' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onTableBeforeDelete' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onTableSetNewTags' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onTableAfterReset' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onTableAfterLoad' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onBeforeBatch' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onContentAfterSave' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onContentAfterDelete' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onContentChangeState' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onApplicationAfterSave' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onExtensionAfterInstall' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onExtensionAfterUninstall' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onExtensionAfterUpdate' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onExtensionAfterSave' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onExtensionAfterDelete' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onUserAfterSave' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onUserAfterDelete' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onUserAfterSaveGroup' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onUserAfterDeleteGroup' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onUserAfterLogin' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onUserLoginFailure' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onUserLogout' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onUserAfterRemind' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAfterCheckin' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAfterLogPurge' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAfterLogExport' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAfterPurge' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAfterDispatch' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onJoomlaAfterUpdate' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAfterInitialise' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onContentPrepareForm' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onContentPrepareData' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAfterRespond' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onBeforeCompileHead' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAjaxDebug' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAfterDisconnect' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onContentNormaliseRequestData' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onContentAfterTitle' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onContentBeforeDisplay' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onContentAfterDisplay' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onContentPrepare' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onPrepareFinderContent' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onFinderResult' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAfterRender' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onUserBeforeSave' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAjaxSendAlways' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAjaxSendNever' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAjaxSendOnce' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onAjaxSendStats' => class Joomla\Event\ListenersPriorityQueue { ... }, 'onGetStatsData' => class Joomla\Event\ListenersPriorityQueue { ... }] }) C:\www\joomla4\libraries\src\Plugin\PluginHelper.php:193
[29-Mar-2021 09:21:54 UTC] PHP   9. Joomla\CMS\Application\SiteApplication->bootPlugin($plugin = 'webauthn', $type = 'system') C:\www\joomla4\libraries\src\Plugin\PluginHelper.php:235
[29-Mar-2021 09:21:54 UTC] PHP  10. Joomla\CMS\Application\SiteApplication->loadExtension($type = 'Joomla\\CMS\\Extension\\PluginInterface', $extensionName = 'webauthn:system', $extensionPath = 'C:\\www\\joomla4/plugins/system/webauthn') C:\www\joomla4\libraries\src\Extension\ExtensionManagerTrait.php:94
[29-Mar-2021 09:21:54 UTC] PHP  11. Joomla\CMS\Application\SiteApplication->loadPluginFromFilesystem($plugin = 'webauthn', $type = 'system') C:\www\joomla4\libraries\src\Extension\ExtensionManagerTrait.php:160
[29-Mar-2021 09:21:54 UTC] PHP  12. require_once() C:\www\joomla4\libraries\src\Extension\ExtensionManagerTrait.php:219
avatar toivo toivo - open - 29 Mar 2021
avatar joomla-cms-bot joomla-cms-bot - labeled - 29 Mar 2021
avatar toivo
toivo - comment - 29 Mar 2021

As a test I installed Beta8-dev Full version from 26 February in the same environment and then updated from today's https://developer.joomla.org/nightlies/Joomla_4.0.0-beta8-dev-Development-Update_Package.zip. No problems whatsoever.


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/32922.

avatar toivo
toivo - comment - 29 Mar 2021

Sorry, typo in my environment, s/b Apache 2.4.46c.


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/32922.

avatar joomdonation
joomdonation - comment - 29 Mar 2021

Could you please check to see if the file plugins/system/webauthn/src/PluginTraits/AjaxHandler.php is available in your Joomla installation? If it is there and you are still getting the error, maybe you should try to delete/rename the file administrator/cache/autoload_psr4.php to have Joomla re-generate the namespace map again might solve the issue.

avatar ReLater
ReLater - comment - 29 Mar 2021

Just for the sake of completeness: #31752

avatar toivo
toivo - comment - 29 Mar 2021

@joomdonation - sorry, the original test folder was deleted and reused. Next time I should keep the original virtual host and just rename the folder.

Now I created a new virtual host, expanded the same Full version of 29 March and the file AjaxHandler.php is in that folder. Did the same steps as the failed installation and this time both the front end and the back end worked all right. Possibly the issue was caused by some interference by anti-virus in Windows.


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/32922.

avatar alikon alikon - change - 29 Mar 2021
Status New Closed
Closed_Date 0000-00-00 00:00:00 2021-03-29 17:10:10
Closed_By alikon
avatar alikon alikon - close - 29 Mar 2021
avatar alikon
alikon - comment - 29 Mar 2021

i think this can be closed for now
@toivo feel free to reopen if happens again

avatar PhilETaylor
PhilETaylor - comment - 28 Sep 2021

feel free to reopen if happens again

#35686

avatar carlitorweb
carlitorweb - comment - 1 Oct 2021

Could you please check to see if the file plugins/system/webauthn/src/PluginTraits/AjaxHandler.php is available in your Joomla installation? If it is there and you are still getting the error, maybe you should try to delete/rename the file administrator/cache/autoload_psr4.php to have Joomla re-generate the namespace map again might solve the issue.

Just as note for others: I get into this problem just now, migrating a site to version 4.0.3. Doing this previous suggestion, save my night. Just deleted the autoload_psr4.php file, and all back to normal.

avatar paternax
paternax - comment - 5 Oct 2021

I had the same problem during Update form 3.10.2 to 4.0.3. Deleting the autoload_psr4.php solved it.

Wouldn't it possible to integrate the deleting step in the updating process from Joomla? Not every user can read the english issues solutions.


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/32922.

avatar brianteeman
brianteeman - comment - 5 Oct 2021

Wouldn't it possible to integrate the deleting step in the updating process from Joomla? Not every user can read the english issues solutions.

as the file doesnt exist in joomla3 it would be impossible to delete it in the updating process from 3.10

avatar paternax
paternax - comment - 5 Oct 2021

Then at the end of the updating process


This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/32922.

Add a Comment

Login with GitHub to post a comment