Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
romainpoirier opened this issue Jul 1, 2022 · 6 comments

Comments

@romainpoirier
Copy link

romainpoirier commented Jul 1, 2022

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

  • Colour Swatches 1.6.0
  • Control Panel Body Classes 2.2.1
  • CP Field Inspect 1.4.4
  • Dumper 2.0.0
  • Embedded Assets 2.11.2
  • Empty Coalesce 1.0.6
  • Expanded Singles 1.2.0
  • Image Resizer 2.1.1
  • Imager X v3.6.1
  • Mailchimp Transactional 1.0.3
  • Minify 1.2.11
  • Neo 2.13.11
  • Obfuscator 1.0.4
  • Reasons 2.3.0.1
  • Redactor 2.10.8
  • Retcon 2.4.2
  • Sprig 1.13.0
  • SuperSort 3.1.0
  • Typogrify 1.1.19
@romainpoirier romainpoirier changed the title [3.x]: error: array_merge(): Expected parameter 1 to be an array, bool given on composer update [3.x]: error: array_merge(): Expected parameter 1 to be an array, bool given on update Jul 1, 2022
@romainpoirier romainpoirier changed the title [3.x]: error: array_merge(): Expected parameter 1 to be an array, bool given on update [3.x]: error: array_merge(): Expected parameter 1 to be an array, bool given on craft update Jul 1, 2022
@brandonkelly
Copy link
Member

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

@romainpoirier
Copy link
Author

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
Copy link
Member

brandonkelly commented Jul 4, 2022

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

@romainpoirier
Copy link
Author

This is the config:

"config": {
  "allow-plugins": true,
  "sort-packages": true,
  "optimize-autoloader": true,
  "platform": {
    "php": "7.4"
  }
},

@brandonkelly
Copy link
Member

brandonkelly commented Jul 4, 2022

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
Copy link
Member

Craft 3.7.47 and 4.1.1 are both out with that update.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants