PayPal Checkout lässt sich nicht aktivieren (anderer content)

Hallo Freunde. Ich bin schonwieder am verzweifeln mit OXID.

Ich habe hier ein OXID 6.2.4 unter PHP 7.4

Beim Update eines Drittanbietermodules wurde ungefragt das PayPalcheckout-Modul 2.1.4 aktualisiert. Obwohl ich die update-Frage mit nein beantwortet habe. Ich habe aber am Dateidatum im Vendor-Ordner bei dem Modul gesehen, dass hier alle Dateien aktualisiert wurden. → Seit dem gingen die PayPal-Checkout Bezahlmethoden nicht mehr (alle not finished).

Dann habe ich das PayPal Checkout-Modul auf 1.3.2 gedowngradet weil es ohnehin immer mal Probleme gab und ich gelesen habe, dass das das richtige Modul für OXID 6.2.4 wäre.

Nun gibt es aber ein neues Problem: Das Modul lässt sich nicht aktivieren - und ich bin einer Depression nahe (kein Scherz bin total verzweifelt mit den OXID-Problemen)

Für die Suchmaschine, hier nochmal der Text:

Cannot autowire service “OxidSolutionCatalysts\PayPal\Service\ModuleSettings”: argument “$db” of method “__construct()” references class “OxidEsales\Eshop\Core\Database\Adapter\Doctrine\Database” but no such service exists. It cannot be auto-registered because it is from a different root namespace.

Was kann ich da machen? Wie bekomme ich das Modul wieder zum laufen?
Ich stehe total auf dem Schlauch und habe keinen Ansatzpunkt.

Ein Update des gesamten Shops will ich in der stressigen Zeit nicht machen weil der Shop viele Module hat und diese Situation hier ist schon schlimm genug.

Danke vorab.

PS: es gibt bereits ein Topic mit diesem Thema, das ist aber geschlossen und da habe ich keine Lösung gefunden

PPS: Das ist der zugehörige Fehler im Errorlog

[2023-11-15 01:12:01] OXID Logger.ERROR: 
Cannot autowire service "OxidSolutionCatalysts\PayPal\Service\ModuleSettings": argument "$db" of method "__construct()" 
references class "OxidEsales\Eshop\Core\Database\Adapter\Doctrine\Database" but no such service exists. 
It cannot be auto-registered because it is from a different root namespace. 
["[object] (Symfony\\Component\\DependencyInjection\\Exception\\RuntimeException(code: 0): 
Cannot autowire service \"OxidSolutionCatalysts\\PayPal\\Service\\ModuleSettings\": 
argument \"$db\" of method \"__construct()\" references class \"OxidEsales\\Eshop\\Core\\Database\\Adapter\\Doctrine\\Database\" but no such service exists. 
It cannot be auto-registered because it is from a different root namespace. at 
/www/htdocs/w019.../domainname.de/vendor/symfony/dependency-injection/Compiler/DefinitionErrorExceptionPass.php:37)\n[stacktrace]\n
#0 /www/htdocs/w019.../domainname.de/vendor/symfony/dependency-injection/Compiler/AbstractRecursivePass.php(60): Symfony\\Component\\DependencyInjection\\Compiler\\DefinitionErrorExceptionPass->processValue(Object(Symfony\\Component\\DependencyInjection\\Definition), true)\n
#1 /www/htdocs/w019.../domainname.de/vendor/symfony/dependency-injection/Compiler/DefinitionErrorExceptionPass.php(30): Symfony\\Component\\DependencyInjection\\Compiler\\AbstractRecursivePass->processValue(Array, true)\n
#2 /www/htdocs/w019.../domainname.de/vendor/symfony/dependency-injection/Compiler/AbstractRecursivePass.php(39): Symfony\\Component\\DependencyInjection\\Compiler\\DefinitionErrorExceptionPass->processValue(Array, true)\n
#3 /www/htdocs/w019.../domainname.de/vendor/symfony/dependency-injection/Compiler/Compiler.php(140): Symfony\\Component\\DependencyInjection\\Compiler\\AbstractRecursivePass->process(Object(Symfony\\Component\\DependencyInjection\\ContainerBuilder))\n
#4 /www/htdocs/w019.../domainname.de/vendor/symfony/dependency-injection/ContainerBuilder.php(789): Symfony\\Component\\DependencyInjection\\Compiler\\Compiler->compile(Object(Symfony\\Component\\DependencyInjection\\ContainerBuilder))\n
#5 /www/htdocs/w019.../domainname.de/vendor/oxid-esales/oxideshop-ce/source/Internal/Framework/Module/Setup/Validator/ServicesYamlValidator.php(74): Symfony\\Component\\DependencyInjection\\ContainerBuilder->compile()\n
#6 /www/htdocs/w019.../domainname.de/vendor/oxid-esales/oxideshop-ce/source/Internal/Framework/Module/Setup/Validator/ServicesYamlValidator.php(51): OxidEsales\\EshopCommunity\\Internal\\Framework\\Module\\Setup\\Validator\\ServicesYamlValidator->buildContainer()\n
#7 /www/htdocs/w019.../domainname.de/vendor/oxid-esales/oxideshop-ce/source/Internal/Framework/Module/Setup/Service/ModuleConfigurationHandlingService.php(75): OxidEsales\\EshopCommunity\\Internal\\Framework\\Module\\Setup\\Validator\\ServicesYamlValidator->validate(Object(OxidEsales\\EshopCommunity\\Internal\\Framework\\Module\\Configuration\\DataObject\\ModuleConfiguration), 1)\n
#8 /www/htdocs/w019.../domainname.de/vendor/oxid-esales/oxideshop-ce/source/Internal/Framework/Module/Setup/Service/ModuleConfigurationHandlingService.php(34): OxidEsales\\EshopCommunity\\Internal\\Framework\\Module\\Setup\\Service\\ModuleConfigurationHandlingService->validateModuleConfiguration(Object(OxidEsales\\EshopCommunity\\Internal\\Framework\\Module\\Configuration\\DataObject\\ModuleConfiguration), 1)\n
#9 /www/htdocs/w019.../domainname.de/vendor/oxid-esales/oxideshop-ce/source/Internal/Framework/Module/Setup/Service/ModuleActivationService.php(94): OxidEsales\\EshopCommunity\\Internal\\Framework\\Module\\Setup\\Service\\ModuleConfigurationHandlingService->handleOnActivation(Object(OxidEsales\\EshopCommunity\\Internal\\Framework\\Module\\Configuration\\DataObject\\ModuleConfiguration), 1)\n
#10 /www/htdocs/w019.../domainname.de/vendor/oxid-esales/oxideshop-ce/source/Internal/Framework/Module/Setup/Bridge/ModuleActivationBridge.php(50): OxidEsales\\EshopCommunity\\Internal\\Framework\\Module\\Setup\\Service\\ModuleActivationService->activate('osc_paypal', 1)\n
#11 /www/htdocs/w019.../domainname.de/vendor/oxid-esales/oxideshop-ce/source/Application/Controller/Admin/ModuleMain.php(70): OxidEsales\\EshopCommunity\\Internal\\Framework\\Module\\Setup\\Bridge\\ModuleActivationBridge->activate('osc_paypal', 1)\n
#12 /www/htdocs/w019.../domainname.de/vendor/oxid-esales/oxideshop-ce/source/Core/Controller/BaseController.php(534): OxidEsales\\EshopCommunity\\Application\\Controller\\Admin\\ModuleMain->activateModule()\n#13 /www/htdocs/w019.../domainname.de/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(347): OxidEsales\\EshopCommunity\\Core\\Controller\\BaseController->executeFunction('activateModule')\n
#14 /www/htdocs/w019.../domainname.de/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(280): OxidEsales\\EshopCommunity\\Core\\ShopControl->executeAction(Object(OxidEsales\\Eshop\\Application\\Controller\\Admin\\ModuleMain), 'activateModule')\n
#15 /www/htdocs/w019.../domainname.de/source/modules/d3/modcfg/Modules/Application/Controller/d3_oxshopcontrol_modcfg_extension.php(164): OxidEsales\\EshopCommunity\\Core\\ShopControl->_process('OxidEsales\\\\Esho...', 'activateModule', NULL, NULL)\n
#16 /www/htdocs/w019.../domainname.de/vendor/oxid-esales/oxideshop-ce/source/Core/ShopControl.php(142): D3\\ModCfg\\Modules\\Application\\Controller\\d3_oxshopcontrol_modcfg_extension->_process('OxidEsales\\\\Esho...', 'activateModule', NULL, NULL)\n
#17 /www/htdocs/w019.../domainname.de/source/modules/d3/modcfg/Modules/Application/Controller/d3_oxshopcontrol_modcfg_extension.php(94): OxidEsales\\EshopCommunity\\Core\\ShopControl->start('module_main', 'activateModule', NULL, NULL)\n
#18 /www/htdocs/w019.../domainname.de/vendor/oxid-esales/oxideshop-ce/source/Core/Oxid.php(27): D3\\ModCfg\\Modules\\Application\\Controller\\d3_oxshopcontrol_modcfg_extension->start()\n
#19 /www/htdocs/w019.../domainname.de/source/index.php(16): OxidEsales\\EshopCommunity\\Core\\Oxid::run()\n
#20 /www/htdocs/w019.../domainname.de/source/admin/index.php(12): require_once('/www/htdocs/w01...')\n
#21 {main}\n"] []

Hallo @Sir_Paladin,
ich würde dir raten, dich dazu an den Support zu wenden. Die haben die meiste Erfahrung mit sowas.

Eine Sache fällt mir allerdings auf: Es gibt keine Update-Frage für das Update der eigentlichen Module im Shop. Gab es noch nie. Entweder du machst ein composer-Update oder nicht.
Der Shop stellt anschließend noch (bei 6.x) die Frage, ob er von den durch composer verwalteten Komponenten noch die neuen Module korrekt im Shop verlinken bzw. dorthin kopieren soll.
Wenn du nicht gerade auf der lokalen Enticklungsmaschine unterwegs bist und genau weißt, was und warum du tust, solltest du das Update tunlichst immer durchführen, denn es sorgt dafür, dass die Dateien, die die Module benötigen auch in den Shop kopiert werden.

Mein Verdacht ist, dass jetzt die Dateien, die der Shop zu fassen bekommt, nicht mehr mit denen übereinstimmen, die er glaubt, haben zu müssen. (Das composer-autoloading stimmt dann nicht)

Du kannst mal probieren, den vendor-Ordner und die Modulverzeichnisse alle von composer installierten Module zu löschen und composer install neu aufzurufen. (Und dann die Update-Fragen mit ja beantworten)
Besser wäre aber, das zusammen mit Support unter Anleitung zu tun.
Wenn du nicht genau weißt, welche Module das sein sollten und was womit zusammenhängt, kannst du die Situation auch noch verschlimmern. Vor allem, wenn die Module nicht sauber aus einem Deployment kommen, sondern womöglich nur auf der Maschine liegen… auch wenn das extrem fahrlässig wäre.

Viele Grüße,
Sven

1 Like

Hallo Sven,

wir haben uns nach Auftrag des Kunden der Sache angenommen und nun wollten wir Dir noch eine Rückmeldung über die Ursache geben.

Historisch war mal die Version 2.x vom Paypal-Modul im OXID 6.2.3 installiert. Das war vor einem Jahr noch legitim. Ihr (OXID) hattet euch dann umentschieden und nur die Modulversion 1.x dafür vorgesehen. Im Shop wurde mit Composer ein Downgrade ausgeführt und die “Kopieren nach source”-Aktion ausgeführt. Wie der Name schon sagt, kopiert die aber nur. So blieb im source-Ordner eine verwaiste “services.yaml” vom 2er Modul zurück, die den Containerbuilder des DIC triggerte und den besagten Fehler auslöste.

Hinweis an eure Entwicklung: Dependencies von Beginn an sauber definieren hilft Ärger zu vermeiden.

Grüße, Daniel.

3 Likes

So, nun melde ich mich nochmal zu Wort.

Also großes Dankeschön an Herrn Seifert von der Firma D3 Data Development aus Thalheim (sogar bei uns fast schon in der Nachbarschaft).
Ich hatte in meiner Verzweiflung mich kostenpflichtig an die Oxperten (Tippfehler ist Absicht :wink: von D3 gewandt und um Hife gebeten. Gestern Abend hatte ich das Ticket erstellt und schon heute wurde es bearbeitet und die Lösung gefunden. An dieser Stelle großes Lob und klare Empfehlung für den Service von D3.

Wie schon im vorherigen Post beschrieben war im Shop zuerst die initial empfohle PayPal-Checkout-Version 2.1.x installiert und nach aktuellen Empfehlungen ist nun nachträglich die Version 1.3.x die richtige Version, siehe Installation — PayPal Checkout | Moduldokumentation
Das hatte nicht nur mich verwirrt sondern auch unseren Kunden den Shopbetreiber. Und dann noch der besagte Fehler im Zusammenhang mit dem Ausfall der Bezahlmethoden … da hatte ich dann Schweißperlen auf der Stirn und eine schlaflose Nacht.

Und die technische Ursache wurde ja hier schon im vorherigen Post beschrieben.

2 Likes