From bbe45c6960218593f3cbc660ce52c5cfcd8c8ef0 Mon Sep 17 00:00:00 2001
From: Christian Kuhn <lolli@schwarzbu.ch>
Date: Tue, 12 Dec 2017 12:45:04 +0100
Subject: [PATCH] [TASK] Install tool fails if LocalConfiguration EXT/extConf
 does not exist

On fresh instances, the install tool may fail if path EXT/extConf
which is written as b/w compat layer does not exist, yet.
Patch catches the (generic) exception from ArrayUtility->getValueByPath()
and initializes the value to an empty array to continue in this case.

Resolves: #83298
Related: #82368
Releases: master
Change-Id: Iffac458a9e42183139ab4425082abb6f78944ffd
Reviewed-on: https://review.typo3.org/55044
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Susanne Moog <susanne.moog@typo3.org>
Tested-by: Susanne Moog <susanne.moog@typo3.org>
---
 .../sysext/install/Classes/Controller/LayoutController.php | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/typo3/sysext/install/Classes/Controller/LayoutController.php b/typo3/sysext/install/Classes/Controller/LayoutController.php
index 7dd54bba3f1c..6f775f93b6a9 100644
--- a/typo3/sysext/install/Classes/Controller/LayoutController.php
+++ b/typo3/sysext/install/Classes/Controller/LayoutController.php
@@ -104,7 +104,12 @@ class LayoutController extends AbstractController
     public function executeSilentLegacyExtConfExtensionConfigurationUpdateAction(): ResponseInterface
     {
         $configurationManager = new ConfigurationManager();
-        $oldExtConfSettings = $configurationManager->getConfigurationValueByPath('EXT/extConf');
+        try {
+            $oldExtConfSettings = $configurationManager->getConfigurationValueByPath('EXT/extConf');
+        } catch (\RuntimeException $e) {
+            // The old 'extConf' array may not exist anymore, set to empty array if so.
+            $oldExtConfSettings = [];
+        }
         $newExtensionSettings = $configurationManager->getConfigurationValueByPath('EXTENSIONS');
         foreach ($oldExtConfSettings as $extensionName => $extensionSettings) {
             if (!array_key_exists($extensionName, $newExtensionSettings)) {
-- 
GitLab