Many problems with oxid eshop

Hello everyone. I am sorry to disturb you again, but after a week of neverending trying while checking/searching/trying too many things, I am here again.

Small introduction - why is it everytime I am trying to upgrade OXID so painful? Literally none of my other mini projects are causing such big pain as OXID does. Why? Is it me? Or lack of documentation? Or lack of devs being smart to give people adequate ways to upgrade easily? In more than 20+ years in IT, with 10+ years using OXID, I never had such painful upgrades/migrations as with OXID. Many times I already was thinking to completely abandon and use easy plug/play solutions, but maybe the issue is with me I am still trying although everything in OXID is such painful when it comes to updates/upgrades.

Well, to the point. Based on previous, I am always trying to stay on stable OXID version as long as possible to avoid more gray hairs every time any update is released.

This time my situation is as follows: OXID CE 6.2.3 working like a charm many years. I would be happy to continue. But otzher projects are pushing me hard into newer versions of PHP, mysql, Apache… And also in terms of security, I agree that it is time to move forward after couple of years again.

I was able to get to OXID CE 6.5.2 using the documentation, still under my setup with php 7.4.24 and mysql 5.7.35. And of course here comes the pain to get from 6.5.2 to 7.0, together with need of switching to newer versions of php - oh dear why there cannot be some “helping version” of oxid or some patch or anything to be able to work “hybrid” with both old and new php and mysql?
Anyway, I switched to php 8.1.31 because my new target version 8.3.31 seems to be too new for oxid 7.0. I also switched to mysql 8.0 as again my new target version 8.4.10 LTS seems to be too new for oxid 7.0 which is needed (my target oxid version 7.4 hopefully).
The first thing and wasted time was with mysql. Simply I found I am unable to finish migration to oxid 7.0 under mysql 8.0 - definitely not and too many issues and nonsenses.
Revert to 6.5.2 and mysql 5.7.35, staying with php 8.1.31 to be able to perform the upgrade.

Another try to upgrade to oxid 7.0 under mysql 5.7.35 with fingers crossed as they wrote they removed support of mysql 5 under oxid 7.0 - oh dear why so brutal and no version in the middle again to ensure smooth transition?

All the time following this documentation: Updating from OXID eShop 6.5 to OXID eShop 7.0 — OXID eShop developer documentation 7.0 documentation

Did exactly step by step mentioned there, although this “documentation” is a joke and not detailed at all.

In short - a lot of failed attempts followed by restore of 6.5.2 again. Wasted, frustrated, all other projects migrated like a charm in couple of minutes only. Too many errors everywhere, almost nothing working although strictly following mentioned document. Oh dear.

My best attempt was, that after all the steps covered from the upgrade manual, I was able to login to shop administration. Crazy lot issues still, frontend in maintenance mode. Although I followed documentation precisely? Like really? Another bad joke from devs.

I was able to find out that most probably currencies, languages and seo were not correctly migrated. wysiwig errors with installation I was able to help with editing core php file - but again, why should I do it? why devs cannot do it precisely? Also not sure if decoding was fully covered and if can be related, but so far I am looking my older backups, I never had any excryption key in config.inc.php.

Under administration I added languages again and currencies. Still, php error log full of nonsense generated by oxid - why? No clean mechanism in 2026, really? Also I had to activate new Apex theme in administration, although old Flow/Wave not supported anymore and I would expect automatic switchover during migration!

Anyway, current status is I can get into administation and set there anything. But still, after many tries and investigations, I was unable to get rid of the maintenance mode and the shop frontend was never loaded under oxid 7.0

Wasted, a week of time spent for nothing, running now again 6.5.2 while having this partialy done 7.0 side loaded in case I would like to return to it later.

Although I read too much here and on internet, I am unable to find what is still wrong to make the oxid 7.0 frontend start with my old but gold data, to be able to stabilize the situation for some days and hopefully then to move step by step to oxid 7.4 and php 8.3.31 and mysql 8.4.10 = very long journey but I hope if I am able to achieve this, I will finally have some rest for next couple of years again.

I am really sad OXID doesnt have precise documentation. Even worse, it doesnt have precise upgrade roadmap with too many restrictions and changes at once, causing it almost impossible to follow.

If there is any option to safely export all shop data from 6.5.2 and import without any harm to brand new installation of oxid 7.4 under mysql 8.4.10 and php 8.3.31 I am happy to do it.

If there is precise documentation and sensible roadmap for upgrading, I am happy to follow it, same way as I was painfully following in past from oxid 2.x towards 6.2.3

But this time it looks like no go for me, because there is nothing I can follow and too many things were swapped or edited or cut between 6.5.2 and 7.0.0 that it is really impossible for me to find out why the shop is still falling into maintenance mode. One thing is to see logs, but too many changes at once never brought anything good.

Thank you if you read till here and if possible, I will be happy for any tips/tricks/links to help me make it work. I have complete dump of 6.5.2 to reload anytime, but honestly I would never believe it will be painful such lot. Especially as I am not using any external modules and using only oxid core where I am not using all its modules and dont need them.

This project is really crazy. I am half way broken to completely abandon oxid, still a small chance to try again after some rest if somebody can kick me enough and point me for important steps and checks not mentioned in documentation. Otherwise I will go to my final versions of php and mysql and update all my other small prijects in a minutes, abandoning OXID after 10+ years of being friends.

Thanks you.

Hi @bass ,

especially when you are not using 3rd party modules or themes upgrading from 6.5 to 7.0
should be no problem.

We updated from 6.4.2 to 7.2 last year and this was much more difficult, as we are using many
3rd party modules and an own theme, which was based on wave.
As there is no longer support of the smarty template engine we had to update all modules and generate a complete new theme based an Apex, so everything is twig compatible and ready for future updates.

This was not easy and we used help from an agency to get this done, as this task was too much for my knowledge.

But if you are using only standard module and theming, this should be much easier.

Important is to get the system requirements right for the OXID 7 system:

We can set the PHP version individual for each folder at our hoster, so the newer shop can be installed with PHP 8 and the older works with PHP 7 for migration.

If this is all ensured, the update using the updating manual step by step should get it done.
I have tried it myself last year without installing 3rd party modules and was able to migrate the database from 6.x to version 7 without problems.

Where did you get stuck in the update process and which error is in the log or dropped on the console?

Kind regards,
Michael

@bass

I don’t understand your problems. The official upgrade documentation may be brief, but it exists, and the procedure described generally works. As you said yourself, you were able to access the admin interface. That suggests a configuration issue rather than a fundamental bug in OXID. Otherwise, it’s not clear what you’re missing.

Maintenance mode almost always indicates a specific, solvable problem, such as an incorrect database state, missing views, or a cache issue. This isn’t an OXID bug, but rather a migration error that can be isolated.

As for the stack: PHP 8.1 and MySQL 5.7 work on both OXID versions, 6.5 and 7.0. So you could have upgraded OXID without having to touch your entire stack at the same time. The option for a clean, phased transition was available but wasn’t taken advantage of.

The fact that Flow and Wave are no longer supported was communicated well in advance. For a store without external modules, the switch to Apex is manageable.

As a general rule, no professional e-commerce platform—whether Magento, Shopware, or WooCommerce—makes major version upgrades trivial. This isn’t a weakness of OXID, but rather the nature of complex e-commerce software.

Hello djelo,
thanks a lot for your reply.

As mentioned, I was using this document: Updating from OXID eShop 6.5 to OXID eShop 7.0 — OXID eShop developer documentation 7.0 documentation

Now step by step following this document:

I switched php from 7.4.24 to 8.1.31 and left mysql running on 5.7.35 for now as migration to 8.0.45 as a temporary solution towards final 8.4.10 LTS showed like a nightmare (only for OXID, other projects running like a charm). I plan to go to higher mysql version later after being at least on 7.0 oxid successfully and stable.

OXID on version 6.5.2 and stable.

No 3rd party modules or templates, just the standard oxid pack so I completely skipped this step in document, because when I am using only core features, I expect full migration and edits to be done automatically while updating from 6.5.2 to 7.0 using composer. It also doesnt make any sense to manually adjust or migrate anything while using only standard oxid packages, right.

Data loss point in document - done, full backup of project folder, full backup of database.

Backup of .yaml made.

Decode the values from tables - I did this using the commands. No output so hopefully done.

Points 3-6 done as written where applicable - for example I didnt find those entries from step 5 in my composer.

Step 7 done with confirming couple of queries.

8+9 done, step 10 skipped as I dont need to limit php log for now and will sort out later when on final versions of PHP, mySQL and OXID where I hope not many errors in php error log and if any these will be solveable.

Steps 11+12+13 covered.

Step 14 I honestly dont understand as I am using standard CE package, standard modules and themes and I assume this was all overwritten and edited and well-cleaned from previous 6.5.2 components properly by composer during the update. Although I was surprised why new Twig template was not automatically set based on 6.5.2 template set to Wave/Flow and not supported anymore.

Current situation as mentioned, oxid admin page loaded, oxid health all green. Still the frontend doesnt work, falling into maintenance mode. Php error log empty, apache log empty, mysql log empty, oxid log full, looks like repeating issue I dont understand, probably something with new template:

OXID Logger.ERROR: Unknown “implode” filter. [“[object] (Twig\Error\SyntaxError(code: 0): Unknown “implode” filter. at E:\eshop\source\Application\views\apex\tpl\message\err_setup.html.twig:9)\n[stacktrace]\n#0 E:\eshop\vendor\twig\twig\src\ExpressionParser.php(562): Twig\ExpressionParser->getFilterNodeClass(‘implode’, 9)\n#1 E:\eshop\vendor\twig\twig\src\ExpressionParser.php(547): Twig\ExpressionParser->parseFilterExpressionRaw(Object(Twig\Node\Expression\ConstantExpression))\n#2 E:\eshop\vendor\twig\twig\src\ExpressionParser.php(405): Twig\ExpressionParser->parseFilterExpression(Object(Twig\Node\Expression\ConstantExpression))\n#3 E:\eshop\vendor\twig\twig\src\ExpressionParser.php(288): Twig\ExpressionParser->parsePostfixExpression(Object(Twig\Node\Expression\ConstantExpression))\n#4 E:\eshop\vendor\twig\twig\src\ExpressionParser.php(177): Twig\ExpressionParser->parsePrimaryExpression()\n#5 E:\eshop\vendor\twig\twig\src\ExpressionParser.php(72): Twig\ExpressionParser->getPrimary()\n#6 E:\eshop\vendor\twig\twig\src\ExpressionParser.php(388): Twig\ExpressionParser->parseExpression()\n#7 E:\eshop\vendor\twig\twig\src\ExpressionParser.php(280): Twig\ExpressionParser->parseHashExpression()\n#8 E:\eshop\vendor\twig\twig\src\ExpressionParser.php(177): Twig\ExpressionParser->parsePrimaryExpression()\n#9 E:\eshop\vendor\twig\twig\src\ExpressionParser.php(72): Twig\ExpressionParser->getPrimary()\n#10 E:\eshop\vendor\twig\twig\src\TokenParser\IncludeTokenParser.php(52): Twig\ExpressionParser->parseExpression()\n#11 E:\eshop\vendor\oxid-esales\twig-component\src\TokenParser\IncludeChainTokenParser.php(35): Twig\TokenParser\IncludeTokenParser->parseArguments()\n#12 E:\eshop\vendor\twig\twig\src\Parser.php(170): OxidEsales\Twig\TokenParser\IncludeChainTokenParser->parse(Object(Twig\Token))\n#13 E:\eshop\vendor\oxid-esales\twig-component\src\TokenParser\CaptureTokenParser.php(38): Twig\Parser->subparse(Array, true)\n#14 E:\eshop\vendor\twig\twig\src\Parser.php(170): OxidEsales\Twig\TokenParser\CaptureTokenParser->parse(Object(Twig\Token))\n#15 E:\eshop\vendor\twig\twig\src\Parser.php(83): Twig\Parser->subparse(NULL, false)\n#16 E:\eshop\vendor\twig\twig\src\Environment.php(491): Twig\Parser->parse(Object(Twig\TokenStream))\n#17 E:\eshop\vendor\twig\twig\src\Environment.php(519): Twig\Environment->parse(Object(Twig\TokenStream))\n#18 E:\eshop\vendor\twig\twig\src\Environment.php(351): Twig\Environment->compileSource(Object(Twig\Source))\n#19 E:\eshop\vendor\twig\twig\src\Environment.php(312): Twig\Environment->loadTemplate(‘_TwigTemplate…’, ‘@main/messa…’)\n#20 E:\eshop\vendor\twig\twig\src\Environment.php(280): Twig\Environment->load(‘@main/messa…’)\n#21 E:\eshop\vendor\oxid-esales\twig-component\src\TwigEngine.php(54): Twig\Environment->render(‘@main/messa…’, Array)\n#22 E:\eshop\vendor\oxid-esales\oxideshop-ce\source\Internal\Framework\Templating\TemplateRenderer.php(32): OxidEsales\Twig\TwigEngine->render(‘message/err_set…’, Array)\n#23 E:\eshop\vendor\oxid-esales\oxideshop-ce\source\Core\ShopControl.php(532): OxidEsales\EshopCommunity\Internal\Framework\Templating\TemplateRenderer->renderTemplate(‘message/err_set…’, Array)\n#24 E:\eshop\vendor\oxid-esales\oxideshop-ce\source\Core\ShopControl.php(117): OxidEsales\EshopCommunity\Core\ShopControl->runOnce()\n#25 E:\eshop\vendor\oxid-esales\oxideshop-ce\source\Core\OXID.php(27): OxidEsales\EshopCommunity\Core\ShopControl->start()\n#26 E:\eshop\source\index.php(16): OxidEsales\EshopCommunity\Core\OXID::run()\n#27 {main}\n”]

Not sure if this could help somehow.
If I missed something important I am fine to return to working backup 6.5.2 and repeat everything again if I might ask you for step by step. Also I can send outputs e.g. from composer if needed. Not sure, if in current situation it can be fixed or if for example upgrade was done by composer only partially.

Anyway, thanks a lot in advance.

Hi @bass ,

hm, i don´t know exactly what caused this error message, but it seems that something did not worked or updated properly.

Just a question:

Did you also test to set up a new OXID 7.0 shop in your server environment to make sure that the
oxid shop in this version works without problems?
If the shop works in a clean new installation, then something get mixed up while the update proccess,
if a clean shop also didn´t work, then something is misconfigured in your server environment.

Kind regards,
Michael

Hi @djelo ,

thank you. Honestly I didnt try clean installation of 7.0 as I didnt find any documentation for shorter way to get to 7.0 or to latest 7.4 = e.g. to export all data from current 6.5.2 and to migrate/import them into clean 7.0 or 7.4 to skip couple of upgrades.

This made me think the only way is to take this long complicated journey of partial upgrades of php, mysql and oxid.

As the admin backend loads properly, I guess the issue is somewhere with template or with bootstrapper or something. But really not sure where to focus now and if to try to fix this as only some small issue or missing step, or if current 7.0 is damaged a lot and I should start over from 6.5.2 again and pray for better result. It is all very time consuming in comparison to other modern projects too. I believe the big issue is here they made so many changes at once between 6.5.2 and 7.0 without some steps/versions in the middle to ensure smooth and easy transition. But maybe I am wrong.

Thank you.

Based on the error message, I suspect that the shop is still running the original version 7.0.0 with the Apex Theme 1.0.0 that was initially shipped. In this early version of the theme, there was a bug in the file err_setup.html.twig, where an invalid `implode` filter was used instead of the correct Twig filter, `join`. This bug was already fixed with the 7.0.1 shop patch, which automatically updated Apex to version 1.2.1:

To verify this, it would be helpful to know the exact Shop version currently installed; you can find this out by running `composer show oxid-esales/oxideshop-ce` (or `pe` or `ee`, depending on the edition). It would also be helpful to know which version of the Apex theme is installed, which can be checked with `composer show oxid-esales/apex-theme`.

If it turns out that you’re still running 7.0.0 with Apex 1.0.0, an update within the 7.0.x series (without jumping to a higher major version of the theme) would likely resolve the issue.

Thank you for your comment.

composer show oxid-esales/oxideshop-ce is throwing:
versions : * v7.0.1 === under administration page I can see 7.0.0 in upper right corner.

composer show oxid-esales/apex-theme is throwing:
versions : * v1.0.0

This means now I only need to somehow update Apex theme and then hopefully frontend will start to work and I can follow other guides to slowly get towards latest 7.4?

oxid-esales/oxideshop-ce is just the core package, one of several components bundled together in the metapackage for a specific release. The metapackage itself is what actually represents “the shop version” as a whole. It’s the version number you see in the admin panel’s top-right corner, and it ties together Core, Apex theme, Twig component, and all other pieces at versions that are tested and guaranteed to work together. If you only update the core package directly instead of the metapackage, the core itself gets bumped, but the other bundled packages (like Apex theme) stay at whatever old, hard-coded version the metapackage originally pinned them to, and the admin panel keeps showing the old overall version too, since that’s driven by the metapackage, not by the core package alone. This is exactly why you’re seeing composer show oxideshop-ce report 7.0.1 while the admin panel still shows 7.0.0, and why apex-theme is stuck at 1.0.0.

You should therefore update the metapackage for your edition specifically with the instructions here:

https://docs.oxid-esales.com/developer/en/7.0/update/patch-update.html

I would perform the update to 7.0.x to see if everything works as intended before performing any further upgrades. Otherwise, it’s impossible to determine where any new problems may have arisen, making it harder to identify the cause.

Thank you. I am not sure why, but for sure I didnt do any further update = just tried to move from 6.5.2 to 7.0 using mentioned guide. Also I still can see 7.0.0 in composer.json file.

Now following instructions from your link, I tried with 7.0.3:

Composer update not needed as it already updated to 2.10.1 during past tries (I really hope I dont need particular version of composer for particular update/upgrade and versions mentioned in guides are lowest supported for described steps). Please dont tell me OXID is such bad it needs only particular versions of everything without overlapping compatibility.

Till point 5, no issues. Step 5 throwing error although directory exists:
Installing module ddoe/wysiwyg-editor-module package.

In Filesystem.php line 540:

The origin directory specified “…\vendor\ddoe\wysiwyg-editor-module\assets” was not found.

I dont need wysiwyg, not sure if native part of package or can be removed.

Anyway, blocked again. OXID is really painful, unfortunately.

Btw, although I tried with 7.0.3, I can see now:
versions : * v7.0.4

Again, completely lost why this is happening, but dont care much as very far from final version.

Now I have maintenance mode even for administration page :slight_smile:

This should give hints in the shop log.

Without more data from the log, it’s hard to say anything about this.

Well, since last message I was able to cope with wysiwyg relative path, not sure if again some bug or what.

Finished the update steps from mentioned guide.

Administration saying version 7.0.3

For the first time I am able to load frontend finally. Did I really spend so many days coping with 7.0.0 bug? Oh dear.

Well, everything is badly formatted now, guessing a new template is the root cause. Many images missing, so far only products images visible and in bad zoom. Homepage shows only categories. Some variables visible directly e.g. FOOTER_NEWSLETTER_INFO or SHOW_ME_MORE

Probably I need to “convert” the content somehow to fit new template? Also not sure about images, currently a mess. Prices hidden, looks like bad formatting again.

Happy it looks a bit further on this long journey, but not sure if I need to optimize everything now under 7.0.3 or rather upgrade and try to fix everything when under final version. Also still couple of different PHP versions and mysql versions on this exhausting ride.

Anyway, thanks for your hints. Otherwise I would give it couple of more tries, ending all the time with 7.0.0 theme bug and give up.