From 672ac6758c58957c5d00e83bd864949e5daa7d90 Mon Sep 17 00:00:00 2001 From: Florian Beier Date: Tue, 17 Feb 2026 19:14:23 +0100 Subject: [PATCH 1/2] Update magento2.php Update set_cache_prefix task so it modifies files directly on the server to avoid permission issues during download, e. g. in CI/CD environments --- recipe/magento2.php | 75 ++++++++++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 31 deletions(-) diff --git a/recipe/magento2.php b/recipe/magento2.php index 44b4a4615..f9397c619 100644 --- a/recipe/magento2.php +++ b/recipe/magento2.php @@ -478,39 +478,52 @@ function magentoDeployAssetsSplit(string $area) **/ desc('Update cache id_prefix'); task('magento:set_cache_prefix', function () { - //download current env config - $tmpConfigFile = tempnam(sys_get_temp_dir(), 'deployer_config'); - download('{{deploy_path}}/shared/' . ENV_CONFIG_FILE_PATH, $tmpConfigFile); - $envConfigArray = include($tmpConfigFile); - //set prefix to `alias_releasename_` - $prefixUpdate = get('alias') . '_' . get('release_name') . '_'; - - //check for preload keys and update - if (isset($envConfigArray['cache']['frontend']['default']['backend_options']['preload_keys'])) { - $oldPrefix = $envConfigArray['cache']['frontend']['default']['id_prefix']; - $preloadKeys = $envConfigArray['cache']['frontend']['default']['backend_options']['preload_keys']; - $newPreloadKeys = []; - foreach ($preloadKeys as $preloadKey) { - $newPreloadKeys[] = preg_replace('/^' . $oldPrefix . '/', $prefixUpdate, $preloadKey); + $envConfigFile = "{{deploy_path}}/shared" . '/' . ENV_CONFIG_FILE_PATH; + $tmpEnvConfigFile = "{{deploy_path}}/shared" . '/' . TMP_ENV_CONFIG_FILE_PATH; + $newPrefix = get('alias') . '_' . get('release_name') . '_'; + + $phpCode = <<<'PHP' + $envConfigFile = $argv[1]; + $tmpEnvConfigFile = $argv[2]; + $newPrefix = $argv[3]; + $config = include $envConfigFile; + + $defaultCache = &$config['cache']['frontend']['default']; + $pageCache = &$config['cache']['frontend']['page_cache']; + + $oldPrefix = $defaultCache['id_prefix'] ?? ''; + + // Update preload_keys if they exist to match the new prefix + if (isset($defaultCache['backend_options']['preload_keys'])) { + foreach ($defaultCache['backend_options']['preload_keys'] as &$key) { + if ($oldPrefix !== '' && str_starts_with($key, $oldPrefix)) { + $key = $newPrefix . substr($key, strlen($oldPrefix)); + } + } } - $envConfigArray['cache']['frontend']['default']['backend_options']['preload_keys'] = $newPreloadKeys; - } - //update id_prefix to include release name - $envConfigArray['cache']['frontend']['default']['id_prefix'] = $prefixUpdate; - $envConfigArray['cache']['frontend']['page_cache']['id_prefix'] = $prefixUpdate; - - //Generate configuration array as string - $envConfigStr = ' Date: Wed, 18 Feb 2026 19:10:00 +0100 Subject: [PATCH 2/2] Update magento2.php Address review comment and use deployer primitive, remove sprintf --- recipe/magento2.php | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/recipe/magento2.php b/recipe/magento2.php index f9397c619..5a04724cc 100644 --- a/recipe/magento2.php +++ b/recipe/magento2.php @@ -512,13 +512,12 @@ function magentoDeployAssetsSplit(string $area) PHP; // Run PHP code on server - run(sprintf( - 'php -r %s %s %s %s', - escapeshellarg($phpCode), - escapeshellarg($envConfigFile), - escapeshellarg($tmpEnvConfigFile), + run( + "{{bin/php}} -r " . escapeshellarg($phpCode) . " -- " . + escapeshellarg($envConfigFile) . " " . + escapeshellarg($tmpEnvConfigFile) . " " . escapeshellarg($newPrefix) - )); + ); // Remove symlink for env.php run("rm {{release_or_current_path}}/" . ENV_CONFIG_FILE_PATH);