.. include:: /Includes.rst.txt .. _deprecation-90147: ================================================= Deprecation: #90147 - Unified File Name Validator ================================================= See :issue:`90147` Description =========== The logic for validating if a new (uploaded) or renamed file's name is allowed is now available in an encapsulated PHP class :php:`FileNameValidator`. The functionality is moved so all logic is encapsulated in one single place: - PHP constant `FILE_DENY_PATTERN_DEFAULT` is migrated into a class constant. - :file:`LocalConfiguration.php` setting is only used when it differs from the default. - The :php:`GeneralUtility` method has been marked as deprecated and calls :php:`FileNameValidator->isValid()` directly. This optimization helps to only utilize and use PHPs memory if needed, and avoids to define run-time constants or variables. Logic is only initialized when needed - e.g. when uploading files or using TYPO3's importer via EXT:impexp. In addition, the PHP constant :php:`PHP_EXTENSIONS_DEFAULT` which is not in use anymore, has been marked as deprecated, too. Impact ====== Using the method :php:`GeneralUtility::verifyFilenameAgainstDenyPattern()` directly will trigger a PHP :php:`E_USER_DEPRECATED` error. Using the constants will continue to work but will stop doing so TYPO3 v11.0, when they will be removed. The system-wide setting to override the default file deny pattern, :php:`$GLOBALS['TYPO3_CONF_VARS']['BE']['fileDenyPattern']` is only set when different from the systems default. If it is the same, the option is not set anymore by TYPO3 Core. Affected Installations ====================== TYPO3 installations with PHP code calling the mentioned method directly or using one of the global constants directly. Migration ========= Instead of calling :php:`GeneralUtility::verifyFilenameAgainstDenyPattern($filename)` use :php:`GeneralUtility::makeInstance(FileNameValidator::class)->isValid($filename);` Instead of using the constant :php:`FILE_DENY_PATTERN_DEFAULT`, use :php:`FileNameValidator::DEFAULT_FILE_DENY_PATTERN`. For the PHP constant :php:`PHP_EXTENSIONS_DEFAULT` there is no replacement, as it has no benefit for TYPO3 Core anymore. The extension scanner will detect the method calls or the usage of the constants. .. index:: LocalConfiguration, PHP-API, FullyScanned, ext:core