View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0007705 | OXID eShop (all versions) | 6. ------ Setup ------- | public | 2024-08-08 14:53 | 2024-10-30 07:47 |
Reporter | mario_lorenz | Assigned To | |||
Priority | normal | Severity | major | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Product Version | 7.1.0 | ||||
Summary | 0007705: After updating from OXID7.0 EE to OXID 7.1 EE maintenance mode due to errors in module dependencies | ||||
Description | * Goal: Update an OXID7.0 EE to OXID7.1 EE * In the old 7.0 EE, the modules ddoevisualcms and ddoemedialibrary are active * Update is carried out by adjusting the version in the composer.json to: "oxid-esales/oxideshop-metapackage-ee": "v7.1.0" * then composer update * Now the shop is in maintenance mode Problem: "Composer update" installs the new module ddoemedialibrary as well as the latest versions of ddoevisualcms and ddoemedialibrary. OXID7.1 has the new feature of module dependencies. The modules ddoevisualcms and ddoemedialibrary can no longer be activated if the module ddoemedialibrary has not yet been activated. "Composer update" does not check these dependencies and simply installs a "deactivated" ddoemedialibrary. Since the shop is now no longer functional via the frontend/backend or the console, the only option is to make a manual correction in two places: * var/configuration/shops/1/modules/ddoemedialibrary.yaml -> Set the module to "active" * var/configuration/shops/1/active_module_services.yaml -> Add a line for ddoemedialibrary here based on the existing files. In my case, this was: resource: /var/www/html/vendor/oxid-esales/media-library-module/services.yaml * The shop then works again. | ||||
Steps To Reproduce | Preparation * Classic installation of an OXID 7.0 EE * activate: ddoevisualcms and ddoemedialibrary Actual error reproduction * Adjust version in composer.json to: "oxid-esales/oxideshop-metapackage-ee": "v7.1.0" * cmd: composer update Afterwards, maintenance mode + oe-console are no longer accessible. The note in oxideshop.log: [2024-08-08 14:10:25] OXID Logger.ERROR: Cannot autowire service "OxidEsales\VisualCmsModule\ShortCode\Action": argument "$response" of method "__construct()" references interface "OxidEsales\MediaLibrary\Transput\ResponseInterface" but no such service exists. Did you create a class that implements this interface? ["[object] (Symfony\\Component\\DependencyInjection\\Exception\\RuntimeException(code: 0): Cannot autowire service \"OxidEsales\\VisualCmsModule\\ShortCode\\Action\": argument \"$response\" of method \"__construct()\" references interface face\" but no such service exists. Did you create a class that implements this interface? at /var/www/html/vendor/symfony/dependency-injection/Compiler/DefinitionErrorExceptionPass.php:51)\n[stacktrace]\n#0 /var/www/html/vendor/symfony/dependency-injection/Compiler/Compiler.php(80): Symfony\\Component\\DependencyInjection\\Compiler\\DefinitionErrorExceptionPass->process(Object(Symfony\\Component\\DependencyInjection\\ContainerBuilder))\n#1 /var/www/html/vendor/symfony/dependency-injection/ContainerBuilder.php(767): \Compiler->compile(Object(Symfony\\Component\\DependencyInjection\\ContainerBuilder))\n#2 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Internal/Container/ContainerFactory.php(78): Symfony\\Component\\DependencyInjection\\ContainerBuilder->compile(true)\n#3 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Internal/Container/ContainerFactory.php(69): OxidEsales\\EshopCommunity\\Internal\\Container\\ContainerFactory->getCompiledSymfonyContainer()\n#4 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Internal/Container/ContainerFactory.php(52): OxidEsales\\EshopCommunity\\Internal\\Container\\ContainerFactory->initializeContainer()\n#5 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Core/Di/ContainerFacade.php(37): OxidEsales\\EshopCommunity\\Internal\\Container\\ContainerFactory->getContainer()\n#6 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Core/Module/ModuleVariablesLocator.php(156): OxidEsales\\EshopCommunity\\Core\\Di\\ContainerFacade::get('OxidEsales\\\\Es ho...')\n#7 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Core/Module/ModuleVariablesLocator.php(60): OxidEsales\\EshopCommunity\\Core\\Module\\ModuleVariablesLocator->getClassExtensionsChain()\n#8 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Core/Autoload/ModuleAutoload.php(99): OxidEsales\\EshopCommunity\\Core\\Module\\ModuleVariablesLocator->getModuleVariable('aModules')\n#9 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Core/Autoload/ModuleAutoload. php(72): OxidEsales\\EshopCommunity\\Core\\Autoload\\ModuleAutoload->createExtensionClassChain('allowdynamicpro...')\n#10 [internal function]: OxidEsales\\EshopCommunity\\Core\\Autoload\\ModuleAutoload::autoload('allowdynamicpro...')\n#11 /var/www/html/vendor/symfony/dependency-injection/Compiler/AutowireAsDecoratorPass.php(40): ReflectionClass->getAttributes('Symfony\\\\Compone...', 2)\n#12 /var/www/html/vendor/symfony/dependency-injection/Compiler/AutowireAsDecoratorPass.php(28): Symfony\\Component\\Depen dencyInjection\\Compiler\\AutowireAsDecoratorPass->processClass(Object(Symfony\\Component\\DependencyInjection\\Definition), Object(ReflectionClass))\n#13 /var/www/html/vendor/symfony/dependency-injection/Compiler/Compiler.php(80): Symfony\\Component\\DependencyInjection\\Compiler\\AutowireAsDecoratorPass->process(Object(Symfony\\Component\\DependencyInjection\\ContainerBuilder))\n#14 /var/www/html/vendor/symfony/dependency-injection/ContainerBuilder.php(767): Symfony\\Component\\DependencyInjection\\Compiler\ \Compiler->compile(Object(Symfony\\Component\\DependencyInjection\\ContainerBuilder))\n#15 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Internal/Container/BootstrapContainerFactory.php(25): Symfony\\Component\\DependencyInjection\\ContainerBuilder->compile()\n#16 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Internal/Container/ContainerBuilderFactory.php(24): OxidEsales\\EshopCommunity\\Internal\\Container\\BootstrapContainerFactory::getBootstrapContainer()\n#17 / var/www/html/vendor/oxid-esales/oxideshop-ce/source/Internal/Container/ContainerFactory.php(76): OxidEsales\\EshopCommunity\\Internal\\Container\\ContainerBuilderFactory->create()\n#18 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Internal/Container/ContainerFactory.php(69): OxidEsales\\EshopCommunity\\Internal\\Container\\ContainerFactory->getCompiledSymfonyContainer()\n#19 /var/www/html/vendor/oxid-esales/oxideshop-ce/source/Internal/Container/ContainerFactory.php(52) | ||||
Additional Information | Solution: In any case, the problem should be described here: https://docs.oxid-esales.com/developer/en/7.1/update/eshop_from_65_to_7/update-to-7.1.html The clean solution would have been: * Before the "composer update", deactivate the two modules ddoevisualcms and ddoemedialibrary * After the "composer update", reactivate the three modules in the correct order. In the description above, the "ddoemedialibrary" should only serve as an example, because this problem can affect any other module that works with dependencies in the future. | ||||
Tags | No tags attached. | ||||
Theme | Not defined | ||||
Browser | Not defined | ||||
PHP Version | Not defined | ||||
Database Version | Not defined | ||||
|
It's interesting since we usually suggest it anyway to deactivate all modules. E.g. see here: https://docs.oxid-esales.com/developer/en/7.1/update/minor-update.html#:~:text=Deactivate%20all%20modules. There's already a PR containing the hint to deactivate all modules: https://github.com/OXID-eSales/developer_documentation/pull/112 But thanks for the hint anyway. [sp] |
|
The PR has been merged. Info now shows on https://docs.oxid-esales.com/developer/en/7.1/update/eshop_from_65_to_7/update-to-7.1.html |