Magento 2: Fix for error „Composer\Repository\ArrayRepository::count() should either be compatible with Countable::count()“ after upgrade to 2.4.4 with PHP 8.1/8.2
The following error occurs
# bin/magento setup:upgrade
PHP Fatal error: During inheritance of Countable: Uncaught Exception: Deprecated Functionality: Return type of Composer\Repository\ArrayRepository::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /srv/www/htdocs/vendor/composer/composer/src/Composer/Repository/ArrayRepository.php on line 277 in /srv/www/htdocs/vendor/magento/framework/App/ErrorHandler.php:62
Stack trace:
#0 /srv/www/htdocs/vendor/composer/composer/src/Composer/Repository/ArrayRepository.php(28): Magento\Framework\App\ErrorHandler->handler()
#1 /srv/www/htdocs/vendor/composer/ClassLoader.php(576): include('...')
#2 /srv/www/htdocs/vendor/composer/ClassLoader.php(427): Composer\Autoload\{closure}()
#3 /srv/www/htdocs/vendor/composer/composer/src/Composer/Repository/PlatformRepository.php(31): Composer\Autoload\ClassLoader->loadClass()
#4 /srv/www/htdocs/vendor/composer/ClassLoader.php(576): include('...')
#5 /srv/www/htdocs/vendor/composer/ClassLoader.php(427): Composer\Autoload\{closure}()
#6 /srv/www/htdocs/vendor/composer/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php(375): Composer\Autoload\ClassLoader->loadClass()
#7 /srv/www/htdocs/vendor/composer/composer/src/Composer/Package/Loader/RootPackageLoader.php(70): Composer\Package\Loader\ValidatingArrayLoader::hasPackageNamingError()
#8 /srv/www/htdocs/vendor/composer/composer/src/Composer/Factory.php(368): Composer\Package\Loader\RootPackageLoader->load()
#9 /srv/www/htdocs/vendor/composer/composer/src/Composer/Factory.php(595): Composer\Factory->createComposer()
#10 /srv/www/htdocs/vendor/magento/framework/Composer/ComposerFactory.php(47): Composer\Factory::create()
#11 /srv/www/htdocs/vendor/magento/framework/Composer/ComposerInformation.php(368): Magento\Framework\Composer\ComposerFactory->create()
#12 /srv/www/htdocs/vendor/magento/framework/Composer/ComposerInformation.php(381): Magento\Framework\Composer\ComposerInformation->getComposer()
#13 /srv/www/htdocs/vendor/magento/framework/Composer/ComposerInformation.php(244): Magento\Framework\Composer\ComposerInformation->getLocker()
#14 /srv/www/htdocs/vendor/magento/framework/App/ProductMetadata.php(120): Magento\Framework\Composer\ComposerInformation->getSystemPackages()
#15 /srv/www/htdocs/vendor/magento/framework/App/ProductMetadata.php(80): Magento\Framework\App\ProductMetadata->getSystemPackageVersion()
#16 /srv/www/htdocs/vendor/magento/framework/Console/Cli.php(99): Magento\Framework\App\ProductMetadata->getVersion()
#17 /srv/www/htdocs/bin/magento(22): Magento\Framework\Console\Cli->__construct()
#18 {main} in /srv/www/htdocs/vendor/composer/composer/src/Composer/Repository/ArrayRepository.php on line 28
The cause of the problem are outdated composer.json entries in the dev section. This keeps the composer/composer package at an old state.
composer rem friendsofphp/php-cs-fixer
composer rem phpmd/phpmd
composer update -W
This should then lead to:
Loading composer repositories with package information
Updating dependencies
Lock file operations: 3 installs, 3 updates, 0 removals
- Locking composer/class-map-generator (1.1.0)
- Upgrading composer/composer (2.0.13 => 2.6.3)
- Locking composer/pcre (3.1.0)
- Upgrading composer/xdebug-handler (1.4.6 => 3.0.3)
- Locking seld/signal-handler (2.0.2)
- Upgrading symfony/finder (v5.4.27 => v6.3.3)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 3 installs, 3 updates, 0 removals
- Downloading symfony/finder (v6.3.3)
- Downloading composer/pcre (3.1.0)
- Downloading composer/class-map-generator (1.1.0)
- Downloading composer/xdebug-handler (3.0.3)
- Downloading seld/signal-handler (2.0.2)
- Downloading composer/composer (2.6.3)
- Upgrading symfony/finder (v5.4.27 => v6.3.3): Extracting archive
- Installing composer/pcre (3.1.0): Extracting archive
- Installing composer/class-map-generator (1.1.0): Extracting archive
- Upgrading composer/xdebug-handler (1.4.6 => 3.0.3): Extracting archive
- Installing seld/signal-handler (2.0.2): Extracting archive
- Upgrading composer/composer (2.0.13 => 2.6.3): Extracting archive