Oxideshop-ide-helper doesn't support Composer 2

Hi

I just wanted to update from CE 6.2.2 to CE 6.2.3. oxideshop-ide-helper blocked the update.
I excluded it form composer.json (deleted the entry) and everything worked fine. But I might need to update this file in the future.

Apparently oxideshop-ide-helper does support only Composer 1 (see error-message).
So could you please add Composer 2 support for this file?

Thanks!


Problem 1
- Root composer.json requires oxid-esales/oxideshop-ide-helper ^v3.1.2 -> satisfiable by oxid-esales/oxideshop-ide-helper[v3.1.2].
- oxid-esales/oxideshop-ide-helper v3.1.2 requires composer-plugin-api ^1.1.0 -> found composer-plugin-api[2.0.0] but it does not match the constraint.

You are using Composer 2, which some of your plugins seem to be incompatible with. Make sure you update your plugins or report a plugin-issue to ask them to support Composer 2.
Running update with --no-dev does not mean require-dev is ignored, it just means the packages will not be installed. If dev requirements are blocking the update you have to resolve those problems.

Please check documentation Update from 6.1.x to 6.2.0 — OXID eShop 6.2 | User documentation then you see version of oxideshop-ide-helper https://github.com/OXID-eSales/oxideshop_project/blob/b-6.2-ce/composer.json#L15 have change.

1 Like

You can try: Module Installation deinstalliert anderes Modul

Very helpful - thanks!

I did not take into consideration that I might have done the error in the past, when I updated from 6.1.x to 6.2.x. I didn’t get an error-message then.

“oxid-esales/oxideshop-ide-helper”: “^v4.0.0”, did the trick!

I also missed copying of the file before going to composer update --no-dev:
cp vendor/oxid-esales/oxideshop-ce/source/overridablefunctions.php source/

Now I’m up to date thanks to your suggestion! Thanks indianer3c!

1 Like

Oxideshop-ide-helper does work now, but I get the error

[ErrorException]
file_put_contents(…/source/tmp/container_cache.php): failed to open stream: No such file or directory

The file is there and I even changed all the rights. The I cleared the tmp-folder and I put the shop online to recreate the file - still the same issue.
Do you have a solution for this, too?

Maybe this issue is only once by first call. The shop frontend is working?

Yes, it works. I tried several times to update.

Now if I update with composer update --no-dev I get all sorts of Warnings and it stops working:

Warning: Uncaught ErrorException:
require(…/vendor/composer/…/ralouphie/getallheaders/src/getallheaders.php): failed to open stream: No such file or directory in /…//vendor/composer/autoload_real.php:75
Stack trace:
#0 /…/vendor/composer/autoload_real.php(75): Composer\Util\ErrorHandler::handle(2, ‘require(/…’, ‘/…’, 75, Array)

#1 /…/vendor/composer/autoload_real.php(75): require()

#2 /…/vendor/composer/autoload_real.php(65): composerRequire367b14bf4fce5b1acf1949f6f7e0b0ec(‘7b11c4dc42b3b30…’, ‘/…’)

#3 /…/vendor/autoload.php(7): ComposerAutoloaderInit367b14bf4fce5b1acf1949f6f7e0b0ec::getLoader()

#4 /…/vendor/oxid-esales/oxideshop-composer-plugin/src/Plugin.php(133): require_once(’/neu.suisstore…’)

#5 /…/vendor/oxid-esales/oxideshop-composer-plugin/src/Plugin.php(120): OxidEsales\ComposerPlugin\Plugin->autoloadInstalledPackages()

#6 [internal functi in /…/vendor/composer/autoload_real.php on line 75

Fatal error: composerRequire367b14bf4fce5b1acf1949f6f7e0b0ec(): Failed opening required ‘/…/vendor/composer/…/ralouphie/getallheaders/src/getallheaders.php’ (include_path=’/…/vendor/symfony/yaml:.:/usr/share/pear:/usr/share/php’) in /…/vendor/composer/autoload_real.php on line 75

I get it back to work with: composer require --no-interaction oxid-esales/oxideshop-update-component:"^1.0
But it doesn’t get trough:

Installation failed, reverting ./composer.json and ./composer.lock to their original content.

[ErrorException]
file_put_contents(…/source/tmp/container_cache.php): failed to open stream: No such file or directory

Try to delete vendor directory before composer update --no-dev.

Hmm… Something complicated, because you use OXID eShop Community Series 6.2 before. Maybe you don’t need to Updating the Module Configuration Update from 6.1.x to 6.2.0 — OXID eShop 6.2 | User documentation

Probably. Is there a way I can reinstall the whole version 6.2.3 over the existing installation to get everything working the way it should. I fear that I will have problems the next time I want to update.

You can work with deployment releases, to have a fallback when you will have problems that you can got back to the old version.

Example

  1. You set your live shop into maintenance mode
  2. You create a database dump (without views tables)
  3. You create a new directory directory_for_version_6_2_3 for new shop version (6.2.3)
  4. You install a clean version of serie 6.2 e.g. composer create-project --no-dev oxid-esales/oxideshop-project directory_for_version_6_2_3 dev-b-6.2-ce
  5. You change the document root to new directory directory_for_version_6_2_3 and create .htaccess protection
  6. You create new database
  7. Then you install via web browser the clean version into your new database
  8. Then you copy your source and var directory into clean version
  9. Then you drop your new database tables and you import your database dump from live
  10. Then you migrate database with vendor/bin/oe-eshop-db_migrate migrations:migrate
  11. Then you check your changes if everything working

When everything working you remove .htaccess protection from version 6.2.3.

When nothing working you change the document root to your directory of your live shop version 6.2.2 and deactivate the maintenance mode.

Maybe you can try to use for example https://deployer.org/ so you have for every release a own directory.