Project

General

Profile

Bug #102105

Updated by John Miller 9 months ago

This error is being thrown around by the ExtensionManagementUtility::loadBaseTca() function in the loadBaseTca() method of the \TYPO3\CMS\Core\Core\Bootstrap. 

 *Problem* 
 Array values are being checked improperly.  

 Some package TCA files being _required_ in the @\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::buildBaseTcaFromSingleFiles()@ \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::buildBaseTcaFromSingleFiles() method loops (for both TCA and override TCA) are causing this issue. These TCA files contain keys and even variables whose values are being harvested from non-existent @globals@    globals multi-dimensional keys. 

 *Example 1:* 
 @vendor/typo3/cms-core/Configuration/TCA/pages.php@ contains this line  
 @['label'=>$GLOBALS['TYPO3_CONF_VARS']['FE']['hidePagesIfNotTranslatedByDefault'] ? 'LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.l18n_cfg.I.2a' : 'LLL:EXT:frontend/Resources/Private/Language/locallang_tca.xlf:pages.l18n_cfg.I.2'],@ 

 If '@hidePagesIfNotTranslatedByDefault@' is not defined, the error is thrown. 

 *Example 2:* 
 @vendor/typo3/cms-core/Classes/Resource/Driver/DriverRegistry.php@ contains this line in its constructor 
 @$driverConfigurations=$GLOBALS['TYPO3_CONF_VARS']['SYS']['fal']['registeredDrivers'];@ 
 which also throws the error if '@registeredDrivers@' is undefined. 

 *Solution* 
 # Predicate optional settings such as the ones mentioned above. In example 1, that would be @isset($GLOBALS['TYPO3_CONF_VARS']['FE']['hidePagesIfNotTranslatedByDefault']) ? ...@ and in example 2, @$driverConfigurations=$GLOBALS['TYPO3_CONF_VARS']['SYS']['fal']['registeredDrivers'] ?? null;@ would be good enough to prevent the error. 
 # Use a the try block in the include closures of the \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::buildBaseTcaFromSingleFiles() method and log or throw out the proper message, such as @"undefined array key 'fal'"@ as it should be with example 2 above in order to know the real problem.

Back