Webエンジニアのメモ帳

技術的な話を中心に書いています。

【PHP】composerのエラーと解決方法

エラーの概要

composer installを実行しようとすると、以下のようなエラーが発生しました。

PHP Fatal error: Uncaught ArgumentCountError: array_merge() does not accept unknown named parameters in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/DefaultPolicy.php:84
Stack trace:
#0 [internal function]: array_merge(php/php-oracle-extension: Array)
#1 phar:///usr/local/bin/composer/src/Composer/DependencyResolver/DefaultPolicy.php(84): call_user_func_array('array_merge', Array)
#2 phar:///usr/local/bin/composer/src/Composer/Installer.php(1058): Composer\DependencyResolver\DefaultPolicy->selectPreferredPackages(Object(Composer\DependencyResolver\Pool), Array, Array)
#3 phar:///usr/local/bin/composer/src/Composer/Installer.php(483): Composer\Installer->processDevPackages(Object(Composer\Repository\InstalledFilesystemRepository), Object(Composer\DependencyResolver\Pool), Object(Composer\DependencyResolver\DefaultPolicy), Array, Object(Composer\Repository\CompositeRepository), NULL, 'force-links')
#4 phar:///usr/local/bin/composer/src/Composer/Installer.php(232): Composer\Installer->doInstall(Object(Composer\Repository\InstalledFilesystemRepository), Object(Composer\Repository\CompositeRepository), Object(Composer\Repository\PlatformRepository), Array)
#5 phar:///usr/local/bin/composer/src/Composer/Command/UpdateCommand.php(163): Composer\Installer->run()
#6 phar:///usr/local/bin/composer/vendor/symfony/console/Command/Command.php(245): Composer\Command\UpdateCommand->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#7 phar:///usr/local/bin/composer/vendor/symfony/console/Application.php(835): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#8 phar:///usr/local/bin/composer/vendor/symfony/console/Application.php(185): Symfony\Component\Console\Application->doRunCommand(Object(Composer\Command\UpdateCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#9 phar:///usr/local/bin/composer/src/Composer/Console/Application.php(281): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#10 phar:///usr/local/bin/composer/vendor/symfony/console/Application.php(117): Composer\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#11 phar:///usr/local/bin/composer/src/Composer/Console/Application.php(113): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#12 phar:///usr/local/bin/composer/bin/composer(61): Composer\Console\Application->run()
#13 /usr/local/bin/composer(24): require('phar:///usr/loc...')
#14 {main}
thrown in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/DefaultPolicy.php on line 84

Fatal error: Uncaught ArgumentCountError: array_merge() does not accept unknown named parameters in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/DefaultPolicy.php:84
Stack trace:
#0 [internal function]: array_merge(php/php-oracle-extension: Array)
#1 phar:///usr/local/bin/composer/src/Composer/DependencyResolver/DefaultPolicy.php(84): call_user_func_array('array_merge', Array)
#2 phar:///usr/local/bin/composer/src/Composer/Installer.php(1058): Composer\DependencyResolver\DefaultPolicy->selectPreferredPackages(Object(Composer\DependencyResolver\Pool), Array, Array)
#3 phar:///usr/local/bin/composer/src/Composer/Installer.php(483): Composer\Installer->processDevPackages(Object(Composer\Repository\InstalledFilesystemRepository), Object(Composer\DependencyResolver\Pool), Object(Composer\DependencyResolver\DefaultPolicy), Array, Object(Composer\Repository\CompositeRepository), NULL, 'force-links')
#4 phar:///usr/local/bin/composer/src/Composer/Installer.php(232): Composer\Installer->doInstall(Object(Composer\Repository\InstalledFilesystemRepository), Object(Composer\Repository\CompositeRepository), Object(Composer\Repository\PlatformRepository), Array)
#5 phar:///usr/local/bin/composer/src/Composer/Command/UpdateCommand.php(163): Composer\Installer->run()
#6 phar:///usr/local/bin/composer/vendor/symfony/console/Command/Command.php(245): Composer\Command\UpdateCommand->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#7 phar:///usr/local/bin/composer/vendor/symfony/console/Application.php(835): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#8 phar:///usr/local/bin/composer/vendor/symfony/console/Application.php(185): Symfony\Component\Console\Application->doRunCommand(Object(Composer\Command\UpdateCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#9 phar:///usr/local/bin/composer/src/Composer/Console/Application.php(281): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#10 phar:///usr/local/bin/composer/vendor/symfony/console/Application.php(117): Composer\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#11 phar:///usr/local/bin/composer/src/Composer/Console/Application.php(113): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#12 phar:///usr/local/bin/composer/bin/composer(61): Composer\Console\Application->run()
#13 /usr/local/bin/composer(24): require('phar:///usr/loc...')
#14 {main}
thrown in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/DefaultPolicy.php on line 84

解決方法

以下のコマンドを実行することで解決できました。

composer self-update

解説

コマンドを見れば分かりますが、composer自体のバージョンが古かったのが原因でした。

そのため、上記コマンドでcomposerのバージョンを上げることで解決できました。