craftcms / cms

Build bespoke content experiences with Craft.
https://craftcms.com
Other
3.22k stars 627 forks source link

[3.x]: `error: array_merge(): Expected parameter 1 to be an array, bool given` on craft update #11538

Closed romainpoirier closed 2 years ago

romainpoirier commented 2 years ago

What happened?

Description

On update, I get this composer error: error: array_merge(): Expected parameter 1 to be an array, bool given This happens even if I try to update all, or if I try to update craft/plugins individually. Running composer update doesn't get this error.

Steps to reproduce

  1. run ./craft update/update all or click the Update button in the CP

Craft CMS version

3.7.45.2

PHP version

7.4.25

Operating system and version

Mac OS 12.3.1

Database type and version

MySQL 5.7.34

Image driver and version

Imagick 3.4.4 (ImageMagick 6.9.6-2)

Installed plugins and versions

brandonkelly commented 2 years ago

Search for that error in storage/logs/. Does it include a stack trace? If so please post it.

romainpoirier commented 2 years ago

Sorry for not being much clearer.

After deleting the project, downloading it again from the repository, reset my MAMP, and I can now run composer update or ./craft update/update or composer install all without any error.

But ./craft update/composer-install is still returning this:

Performing Composer install ... error: array_merge(): Expected parameter 1 to be an array, bool given

Output:

And here is the stack trace:

2022-07-04 09:19:22 [-][-][-][trace][yii\base\Application::bootstrap] Bootstrap with yii\shell\Bootstrap::bootstrap()
2022-07-04 09:19:22 [-][-][-][trace][yii\base\Application::bootstrap] Bootstrap with craft\queue\Queue::bootstrap()
2022-07-04 09:19:22 [-][-][-][trace][yii\base\Module::getModule] Loading module: utilities-module
2022-07-04 09:19:22 [-][-][-][info][modules\utilitiesmodule\UtilitiesModule::init] Utilities module loaded
2022-07-04 09:19:22 [-][-][-][trace][yii\base\Application::bootstrap] Bootstrap with modules\utilitiesmodule\UtilitiesModule
2022-07-04 09:19:22 [-][-][-][info][yii\db\Connection::open] Opening DB connection: mysql:host=localhost;dbname=website;port=3306
2022-07-04 09:19:22 [-][-][-][profile begin][yii\db\Connection::open] Opening DB connection: mysql:host=localhost;dbname=website;port=3306
2022-07-04 09:19:22 [-][-][-][profile end][yii\db\Connection::open] Opening DB connection: mysql:host=localhost;dbname=website;port=3306
2022-07-04 09:19:22 [-][-][-][info][yii\db\Command::query] SELECT *
FROM `craft_info`
WHERE `id`=1
LIMIT 1
2022-07-04 09:19:22 [-][-][-][profile begin][yii\db\Command::query] SELECT *
FROM `craft_info`
WHERE `id`=1
LIMIT 1
2022-07-04 09:19:22 [-][-][-][profile end][yii\db\Command::query] SELECT *
FROM `craft_info`
WHERE `id`=1
LIMIT 1
2022-07-04 09:19:22 [-][-][-][info][yii\db\Command::query] SELECT `id`, `handle`, `version`, `schemaVersion`, `licenseKeyStatus`, `installDate`, `licensedEdition`
FROM `craft_plugins`
ORDER BY `handle`
2022-07-04 09:19:22 [-][-][-][profile begin][yii\db\Command::query] SELECT `id`, `handle`, `version`, `schemaVersion`, `licenseKeyStatus`, `installDate`, `licensedEdition`
FROM `craft_plugins`
ORDER BY `handle`
2022-07-04 09:19:22 [-][-][-][profile end][yii\db\Command::query] SELECT `id`, `handle`, `version`, `schemaVersion`, `licenseKeyStatus`, `installDate`, `licensedEdition`
FROM `craft_plugins`
ORDER BY `handle`
2022-07-04 09:19:22 [-][-][-][info][mmikkel\cpfieldinspect\CpFieldInspect::init] CP Field Inspect plugin loaded
2022-07-04 09:19:22 [-][-][-][info][nystudio107\emptycoalesce\EmptyCoalesce::init] Empty Coalesce plugin loaded
2022-07-04 09:19:22 [-][-][-][info][nystudio107\minify\Minify::init] Minify plugin loaded
2022-07-04 09:19:22 [-][-][-][info][yii\db\Command::query] SHOW FULL COLUMNS FROM `craft_neoblocks`
2022-07-04 09:19:22 [-][-][-][profile begin][yii\db\Command::query] SHOW FULL COLUMNS FROM `craft_neoblocks`
2022-07-04 09:19:22 [-][-][-][profile end][yii\db\Command::query] SHOW FULL COLUMNS FROM `craft_neoblocks`
2022-07-04 09:19:22 [-][-][-][info][yii\db\Command::query] SELECT
    `kcu`.`CONSTRAINT_NAME` AS `constraint_name`,
    `kcu`.`COLUMN_NAME` AS `column_name`,
    `kcu`.`REFERENCED_TABLE_NAME` AS `referenced_table_name`,
    `kcu`.`REFERENCED_COLUMN_NAME` AS `referenced_column_name`,
    `rc`.`DELETE_RULE`,
    `rc`.`UPDATE_RULE`
FROM `information_schema`.`REFERENTIAL_CONSTRAINTS` AS `rc`
JOIN `information_schema`.`KEY_COLUMN_USAGE` AS `kcu` ON
    (
        `kcu`.`CONSTRAINT_CATALOG` = `rc`.`CONSTRAINT_CATALOG` OR
        (`kcu`.`CONSTRAINT_CATALOG` IS NULL AND `rc`.`CONSTRAINT_CATALOG` IS NULL)
    ) AND
    `kcu`.`CONSTRAINT_SCHEMA` = `rc`.`CONSTRAINT_SCHEMA` AND
    `kcu`.`CONSTRAINT_NAME` = `rc`.`CONSTRAINT_NAME`
WHERE `rc`.`CONSTRAINT_SCHEMA` = database() AND `kcu`.`TABLE_SCHEMA` = database()
AND `rc`.`TABLE_NAME` = 'craft_neoblocks' AND `kcu`.`TABLE_NAME` = 'craft_neoblocks'
2022-07-04 09:19:22 [-][-][-][profile begin][yii\db\Command::query] SELECT
    `kcu`.`CONSTRAINT_NAME` AS `constraint_name`,
    `kcu`.`COLUMN_NAME` AS `column_name`,
    `kcu`.`REFERENCED_TABLE_NAME` AS `referenced_table_name`,
    `kcu`.`REFERENCED_COLUMN_NAME` AS `referenced_column_name`,
    `rc`.`DELETE_RULE`,
    `rc`.`UPDATE_RULE`
FROM `information_schema`.`REFERENTIAL_CONSTRAINTS` AS `rc`
JOIN `information_schema`.`KEY_COLUMN_USAGE` AS `kcu` ON
    (
        `kcu`.`CONSTRAINT_CATALOG` = `rc`.`CONSTRAINT_CATALOG` OR
        (`kcu`.`CONSTRAINT_CATALOG` IS NULL AND `rc`.`CONSTRAINT_CATALOG` IS NULL)
    ) AND
    `kcu`.`CONSTRAINT_SCHEMA` = `rc`.`CONSTRAINT_SCHEMA` AND
    `kcu`.`CONSTRAINT_NAME` = `rc`.`CONSTRAINT_NAME`
WHERE `rc`.`CONSTRAINT_SCHEMA` = database() AND `kcu`.`TABLE_SCHEMA` = database()
AND `rc`.`TABLE_NAME` = 'craft_neoblocks' AND `kcu`.`TABLE_NAME` = 'craft_neoblocks'
2022-07-04 09:19:22 [-][-][-][profile end][yii\db\Command::query] SELECT
    `kcu`.`CONSTRAINT_NAME` AS `constraint_name`,
    `kcu`.`COLUMN_NAME` AS `column_name`,
    `kcu`.`REFERENCED_TABLE_NAME` AS `referenced_table_name`,
    `kcu`.`REFERENCED_COLUMN_NAME` AS `referenced_column_name`,
    `rc`.`DELETE_RULE`,
    `rc`.`UPDATE_RULE`
FROM `information_schema`.`REFERENTIAL_CONSTRAINTS` AS `rc`
JOIN `information_schema`.`KEY_COLUMN_USAGE` AS `kcu` ON
    (
        `kcu`.`CONSTRAINT_CATALOG` = `rc`.`CONSTRAINT_CATALOG` OR
        (`kcu`.`CONSTRAINT_CATALOG` IS NULL AND `rc`.`CONSTRAINT_CATALOG` IS NULL)
    ) AND
    `kcu`.`CONSTRAINT_SCHEMA` = `rc`.`CONSTRAINT_SCHEMA` AND
    `kcu`.`CONSTRAINT_NAME` = `rc`.`CONSTRAINT_NAME`
WHERE `rc`.`CONSTRAINT_SCHEMA` = database() AND `kcu`.`TABLE_SCHEMA` = database()
AND `rc`.`TABLE_NAME` = 'craft_neoblocks' AND `kcu`.`TABLE_NAME` = 'craft_neoblocks'
2022-07-04 09:19:22 [-][-][-][info][miranj\obfuscator\Obfuscator::init] Obfuscator plugin loaded
2022-07-04 09:19:22 [-][-][-][info][mmikkel\retcon\Retcon::init] Retcon plugin loaded
2022-07-04 09:19:22 [-][-][-][info][nystudio107\typogrify\Typogrify::init] Typogrify plugin loaded
2022-07-04 09:19:22 [-][-][-][trace][yii\base\Controller::runAction] Route to run: update/composer-install
2022-07-04 09:19:22 [-][-][-][trace][yii\base\InlineAction::runWithParams] Running action: craft\console\controllers\UpdateController::actionComposerInstall()
2022-07-04 09:19:22 [-][-][-][error][yii\base\ErrorException:2] yii\base\ErrorException: array_merge(): Expected parameter 1 to be an array, bool given in /vendor/composer/composer/src/Composer/Config.php:191
Stack trace:
#0 [internal function]: yii\base\ErrorHandler->handleError(2, 'array_merge(): ...', '/Users/romainpo...', 191, Array)
#1 /vendor/composer/composer/src/Composer/Config.php(191): array_merge(true, Array, true)
#2 /vendor/composer/composer/src/Composer/Factory.php(350): Composer\Config->merge(Array, 'unknown')
#3 /vendor/composer/composer/src/Composer/Factory.php(646): Composer\Factory->createComposer(Object(Composer\IO\BufferIO), Array, false, '/Users/romainpo...', true, false)
#4 /vendor/craftcms/cms/src/services/Composer.php(539): Composer\Factory::create(Object(Composer\IO\BufferIO), Array)
#5 /vendor/craftcms/cms/src/services/Composer.php(170): craft\services\Composer->createComposer(Object(Composer\IO\BufferIO), '/Users/romainpo...')
#6 /vendor/craftcms/cms/src/console/controllers/UpdateController.php(200): craft\services\Composer->install(NULL, Object(Composer\IO\BufferIO))
#7 [internal function]: craft\console\controllers\UpdateController->actionComposerInstall()
#8 /vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#9 /vendor/yiisoft/yii2/base/Controller.php(178): yii\base\InlineAction->runWithParams(Array)
#10 /vendor/yiisoft/yii2/console/Controller.php(182): yii\base\Controller->runAction('composer-instal...', Array)
#11 /vendor/craftcms/cms/src/console/Controller.php(221): yii\console\Controller->runAction('composer-instal...', Array)
#12 /vendor/yiisoft/yii2/base/Module.php(552): craft\console\Controller->runAction('composer-instal...', Array)
#13 /vendor/yiisoft/yii2/console/Application.php(180): yii\base\Module->runAction('update/composer...', Array)
#14 /vendor/craftcms/cms/src/console/Application.php(89): yii\console\Application->runAction('update/composer...', Array)
#15 /vendor/yiisoft/yii2/console/Application.php(147): craft\console\Application->runAction('update/composer...', Array)
#16 /vendor/craftcms/cms/src/console/Application.php(118): yii\console\Application->handleRequest(Object(craft\console\Request))
#17 /vendor/yiisoft/yii2/base/Application.php(384): craft\console\Application->handleRequest(Object(craft\console\Request))
#18 /craft(13): yii\base\Application->run()
#19 {main}
2022-07-04 09:19:22 [-][-][-][info][application] $_GET = []

$_POST = []

$_FILES = []

$_COOKIE = []

$_SERVER = [
    'TERM_SESSION_ID' => 'w0t1p0:784029B7-5BF3-4640-8A65-6D2D1DAEBD59'
    'SSH_AUTH_SOCK' => '/private/tmp/com.apple.launchd.mRARANhEf3/Listeners'
    'LC_TERMINAL_VERSION' => '3.4.15'
    'COLORFGBG' => '7;0'
    'ITERM_PROFILE' => 'Default'
    'XPC_FLAGS' => '0x0'
    'LANG' => 'fr_BE.UTF-8'
    'PWD' => '/Users/romainpoirier/Documents/website.local'
    'SHELL' => '/bin/zsh'
    '__CFBundleIdentifier' => 'com.googlecode.iterm2'
    'SECURITYSESSIONID' => '186b1'
    'TERM_PROGRAM_VERSION' => '3.4.15'
    'TERM_PROGRAM' => 'iTerm.app'
    'PATH' => '/opt/homebrew/bin:/Applications/MAMP/bin/php/php7.4.25/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Applications/Postgres.app/Contents/Versions/latest/bin'
    'LC_TERMINAL' => 'iTerm2'
    'COLORTERM' => 'truecolor'
    'COMMAND_MODE' => 'unix2003'
    'TERM' => 'xterm-256color'
    'HOME' => '/Users/romainpoirier'
    'TMPDIR' => '/var/folders/0b/67vlxl057t7gs35y7z456gmw0000gn/T/'
    'USER' => 'romainpoirier'
    'XPC_SERVICE_NAME' => '0'
    'LOGNAME' => 'romainpoirier'
    'LaunchInstanceID' => 'BB11D6C7-19D3-4492-845C-FC91A2A4B6C8'
    '__CF_USER_TEXT_ENCODING' => '0x1F5:0:0'
    'ITERM_SESSION_ID' => 'w0t1p0:784029B7-5BF3-4640-8A65-6D2D1DAEBD59'
    'SHLVL' => '1'
    'OLDPWD' => '/Users/romainpoirier'
    '_' => '/./craft'
    'PHP_SELF' => './craft'
    'SCRIPT_NAME' => './craft'
    'SCRIPT_FILENAME' => './craft'
    'PATH_TRANSLATED' => './craft'
    'DOCUMENT_ROOT' => ''
    'REQUEST_TIME_FLOAT' => 1656919162.4903
    'REQUEST_TIME' => 1656919162
    'argv' => [
        0 => './craft'
        1 => 'update/composer-install'
    ]
    'argc' => 2
    'ENVIRONMENT' => 'dev'
    'APP_ID' => 'CraftCMS--fb0bea8c-1e71-4c80-ae8e-720070b947d0'
    'SECURITY_KEY' => '••••••••••••••••••••••••••••••••'
    'DB_DRIVER' => 'mysql'
    'DB_SERVER' => 'localhost'
    'DB_PORT' => '3306'
    'DB_DATABASE' => 'website'
    'DB_USER' => 'root'
    'DB_PASSWORD' => '••••'
    'DB_SCHEMA' => ''
    'DB_TABLE_PREFIX' => 'craft_'
    'CP_TRIGGER' => 'admin'
    'ROOT_URL' => 'https://website.local'
    'SITE_FR' => 'https://website.local/fr'
    'SITE_NL' => 'https://website.local/nl'
    'SITE_EN' => 'https://website.local/en'
    'ASSETS_BASE_URL' => 'https://website.local/assets'
    'SYSTEM_NAME' => 'Website'
    'IS_SYSTEM_LIVE' => 'true'
    'IMAGES_ENABLED' => 'true'
    'IMAGER_TRANSFORM' => 'imgix'
    'IMGIX_URL' => '••••••.imgix.net'
    'HTML_EMAIL_TEMPLATE' => '_email'
    'SYSTEM_EMAIL_ADDRESS' => '••••••@••••••'
    'SYSTEM_NOREPLY_ADDRESS' => '••••••@••••••'
    'SENDER_NAME' => '••••••'
    'MANDRILL_API_KEY' => '••••••••••••••••••••••'
    'MANDRILL_SUBACCOUNT' => '••••••'
    'COLOR_BLACK' => '#000'
    'COLOR_BLUE' => '#0047BB'
    'COLOR_DARK_PINK' => '#840B55'
    'COLOR_GREEN' => '#154734'
    'COLOR_ORANGE' => '#FF5C39'
    'COLOR_PINK' => '#F99FC9'
    'COLOR_WHITE' => '#FFF'
    'COLOR_YELLOW' => '#FFC658'
    'BACKUP_COMMAND' => '/Applications/MAMP/Library/bin/mysqldump -h localhost -u root -proot --add-drop-table --comments --create-options --dump-date --no-autocommit --routines --set-charset --triggers --single-transaction --no-data --result-file=\"{file}\" {database} && /Applications/MAMP/Library/bin/mysqldump -h localhost -u root -proot --add-drop-table --comments --create-options --dump-date --no-autocommit --routines --set-charset --triggers --no-create-info --ignore-table={database}.assetindexdata --ignore-table={database}.assettransformindex --ignore-table={database}.cache --ignore-table={database}.sessions --ignore-table={database}.templatecaches --ignore-table={database}.templatecachecriteria --ignore-table={database}.templatecacheelements {database} >> \"{file}\"'
    'RESTORE_COMMAND' => '/Applications/MAMP/Library/bin/mysql -h localhost -u root -proot {database} < \"{file}\"'
]
brandonkelly commented 2 years ago

What is config set to in composer.json? Seems like it’s something Composer isn’t expecting.

romainpoirier commented 2 years ago

This is the config:

"config": {
  "allow-plugins": true,
  "sort-packages": true,
  "optimize-autoloader": true,
  "platform": {
    "php": "7.4"
  }
},
brandonkelly commented 2 years ago

Turns out that was a known Composer bug (composer/composer#10907) which was just fixed by Composer 2.2.15 three days ago 🎉

I’ve updated Craft’s internal copy of Composer to 2.2.15 for the next Craft 3 and 4 releases.

brandonkelly commented 2 years ago

Craft 3.7.47 and 4.1.1 are both out with that update.