Oxid 6.2 fehlerhaftes Modul deaktivieren

Moin,

ich habe in mein Modul ein kleinen Fehler gebaut und es aktiviert. Nun kommt immer wieder beim deaktivieren die Wartungsseite in dem Frame des Moduls.

Das gleiche passiert wenn ich den Metadata Tab (https://github.com/vanilla-thunder/oxid-module-devutils) des fehlerhaften Moduls aufrufe und die Funktion zum Cache löscen nutze.

Ich habe bereits versucht die Module mit diversen SQL Queries zu deaktivieren aber gefühlt ist da noch ein gewaltiges Caching. Das System abe ic über Composer installiert.

Vielleicht kann mir ja einer auf die Sprünge helfen wie ich mit dem Caching am besten umgehen sollte.

Ich bekomme folgende Fehlermeldung beim deaktivieren:

[2020-08-26 01:39:56] OXID Logger.ERROR: call_user_func() expects parameter 1 to be a valid callback, class 'my_test_module' not found ["[object] (TypeError(code: 0): call_user_func() expects parameter 1 to be a valid callback, class 'my_test_module' not found at /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Internal/Framework/Module/Setup/EventSubscriber/DispatchLegacyEventsSubscriber.php:83)\n[stacktrace]\n#0 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Internal/Framework/Module/Setup/EventSubscriber/DispatchLegacyEventsSubscriber.php(62): OxidEsales\\EshopCommunity\\Internal\\Framework\\Module\\Setup\\EventSubscriber\\DispatchLegacyEventsSubscriber->executeMetadataEvent('onDeactivate', 'my_test_module...', 1)\n#1 [internal function]: OxidEsales\\EshopCommunity\\Internal\\Framework\\Module\\Setup\\EventSubscriber\\DispatchLegacyEventsSubscriber->executeMetadataOnDeactivationEvent(Object(OxidEsales\\EshopCommunity\\Internal\\Framework\\Module\\Setup\\Event\\BeforeModuleDeactivationEvent), 'OxidEsales\\\\Esho...', Object(OxidEsales\\EshopCommunity\\Internal\\Framework\\Event\\ShopAwareEventDispatcher))\n#2 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Internal/Framework/Event/ShopAwareEventDispatcher.php(36): call_user_func(Array, Object(OxidEsales\\EshopCommunity\\Internal\\Framework\\Module\\Setup\\Event\\BeforeModuleDeactivationEvent), 'OxidEsales\\\\Esho...', Object(OxidEsales\\EshopCommunity\\Internal\\Framework\\Event\\ShopAwareEventDispatcher))\n#3 /var/www/html/vendor/symfony/event-dispatcher/EventDispatcher.php(44): OxidEsales\\EshopCommunity\\Internal\\Framework\\Event\\ShopAwareEventDispatcher->doDispatch(Array, 'OxidEsales\\\\Esho...', Object(OxidEsales\\EshopCommunity\\Internal\\Framework\\Module\\Setup\\Event\\BeforeModuleDeactivationEvent))\n#4 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Internal/Framework/Module/Setup/Service/ModuleActivationService.php(126): Symfony\\Component\\EventDispatcher\\EventDispatcher->dispatch('OxidEsales\\\\Esho...', Object(OxidEsales\\EshopCommunity\\Internal\\Framework\\Module\\Setup\\Event\\BeforeModuleDeactivationEvent))\n#5 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Internal/Framework/Module/Setup/Bridge/ModuleActivationBridge.php(62): OxidEsales\\EshopCommunity\\Internal\\Framework\\Module\\Setup\\Service\\ModuleActivationService->deactivate('my_test_module...', 1)\n#6 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Application/Controller/Admin/ModuleMain.php(96): OxidEsales\\EshopCommunity\\Internal\\Framework\\Module\\Setup\\Bridge\\ModuleActivationBridge->deactivate('my_test_module...', 1)\n#7 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Core/Controller/BaseController.php(534): OxidEsales\\EshopCommunity\\Application\\Controller\\Admin\\ModuleMain->deactivateModule()\n#8 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(347): OxidEsales\\EshopCommunity\\Core\\Controller\\BaseController->executeFunction('deactivateModul...')\n#9 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(280): OxidEsales\\EshopCommunity\\Core\\ShopControl->executeAction(Object(OxidEsales\\Eshop\\Application\\Controller\\Admin\\ModuleMain), 'deactivateModul...')\n#10 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(142): OxidEsales\\EshopCommunity\\Core\\ShopControl->_process('OxidEsales\\\\Esho...', 'deactivateModul...', NULL, NULL)\n#11 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Core/Oxid.php(27): OxidEsales\\EshopCommunity\\Core\\ShopControl->start()\n#12 /var/www/html/source/index.php(16): OxidEsales\\EshopCommunity\\Core\\Oxid::run()\n#13 /var/www/html/source/admin/index.php(12): require_once('/var/www/html/s...')\n#14 {main}\n"] []

Vielen Dank!

in deinem Profil steht EE 5.3, die Fehlermeldung sieht aber mehr nach v6.1 oder v6.2.
Welche Shop Version ist es denn?

Hey,

ich habe eine EE5.3 Shop.

Aber hier ist es eine PE6.2 an der ich mich aktuell ausprobiere, über Composer installiert.

MfG

In der v6.2 wird alles zusätzlich in einer yaml Datei irgendwo unter var/ gespeichert.
Das behalten wir erstmal im Hinterkopf.

Ausgehend von der Fehlermeldung hast du ein onDeactivate Event für dein Modul hinterlegt, und zwar eine Funktion in der Klasse my_test_module, diese wird aber beim Deaktivieren nicht gefunden.
Das Modul sollte aber dennoch deaktiviert werden, zumindest war es so bei mir.

Wenn das Modul aktiv bleibt:
Da das Löschen von ungültigen Moduleinträgen aktuell nicht funktioniert, müsstest du erst die metadata.php fixen und diese dann über die oe console einlesen (Install configuration) und dann aus der yaml Datei in die Datenbank übernehmen (apply configuration).
Danach sollte das deaktivieren wieder klappen.