diff --git a/typo3/sysext/fluid/Classes/Core/Rendering/RenderingContext.php b/typo3/sysext/fluid/Classes/Core/Rendering/RenderingContext.php
index f16b59a50a05c4c822a30de19ef411820e3b5139..189469c083b9f223e84ce977fc20d6efe4211ae1 100644
--- a/typo3/sysext/fluid/Classes/Core/Rendering/RenderingContext.php
+++ b/typo3/sysext/fluid/Classes/Core/Rendering/RenderingContext.php
@@ -26,6 +26,7 @@ use TYPO3Fluid\Fluid\Core\Compiler\TemplateCompiler;
 use TYPO3Fluid\Fluid\Core\Parser\Configuration;
 use TYPO3Fluid\Fluid\Core\Parser\InterceptorInterface;
 use TYPO3Fluid\Fluid\Core\Parser\TemplateParser;
+use TYPO3Fluid\Fluid\Core\Parser\TemplateProcessorInterface;
 use TYPO3Fluid\Fluid\Core\Variables\StandardVariableProvider;
 use TYPO3Fluid\Fluid\Core\ViewHelper\ViewHelperInvoker;
 use TYPO3Fluid\Fluid\Core\ViewHelper\ViewHelperVariableContainer;
@@ -87,7 +88,9 @@ class RenderingContext extends \TYPO3Fluid\Fluid\Core\Rendering\RenderingContext
 
         $objectManager = GeneralUtility::makeInstance(ObjectManager::class);
         if (method_exists($this, 'setTemplateProcessors')) {
-            $this->setTemplateProcessors(array_map([$objectManager, 'get'], $GLOBALS['TYPO3_CONF_VARS']['SYS']['fluid']['preProcessors']));
+            /** @var TemplateProcessorInterface[] $processors */
+            $processors = array_map([$objectManager, 'get'], $GLOBALS['TYPO3_CONF_VARS']['SYS']['fluid']['preProcessors']);
+            $this->setTemplateProcessors($processors);
         }
         $this->setExpressionNodeTypes($GLOBALS['TYPO3_CONF_VARS']['SYS']['fluid']['expressionNodeTypes']);
         $this->setTemplatePaths($objectManager->get(TemplatePaths::class));
diff --git a/typo3/sysext/fluid/Classes/Core/Widget/AbstractWidgetViewHelper.php b/typo3/sysext/fluid/Classes/Core/Widget/AbstractWidgetViewHelper.php
index b82470007820ea04990f87274b974d20adb94304..9b9c318d8c62f4a05383a224e9c44a9e0ad0c5f5 100644
--- a/typo3/sysext/fluid/Classes/Core/Widget/AbstractWidgetViewHelper.php
+++ b/typo3/sysext/fluid/Classes/Core/Widget/AbstractWidgetViewHelper.php
@@ -171,7 +171,7 @@ abstract class AbstractWidgetViewHelper extends AbstractViewHelper
     {
         $this->widgetContext->setWidgetConfiguration($this->getWidgetConfiguration());
         $this->initializeWidgetIdentifier();
-        $this->widgetContext->setControllerObjectName(get_class($this->controller));
+        $this->widgetContext->setControllerObjectName($this->controller === null ? 'null' : get_class($this->controller));
         $extensionName = $this->renderingContext->getControllerContext()->getRequest()->getControllerExtensionName();
         $pluginName = $this->renderingContext->getControllerContext()->getRequest()->getPluginName();
         $this->widgetContext->setParentExtensionName($extensionName);
diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/Be/PageInfoViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/Be/PageInfoViewHelper.php
index cd5eaaa77fda4b15a80c949840d10633d3857fc3..d91c1db0cbea949b87af8a0c5b8e9342846e272a 100644
--- a/typo3/sysext/fluid/Classes/ViewHelpers/Be/PageInfoViewHelper.php
+++ b/typo3/sysext/fluid/Classes/ViewHelpers/Be/PageInfoViewHelper.php
@@ -73,9 +73,8 @@ class PageInfoViewHelper extends AbstractBackendViewHelper
         $id = GeneralUtility::_GP('id');
         $pageRecord = BackendUtility::readPageAccess($id, $GLOBALS['BE_USER']->getPagePermsClause(Permission::PAGE_SHOW));
         // Add icon with context menu, etc:
-        /** @var IconFactory $iconFactory */
         $iconFactory = GeneralUtility::makeInstance(IconFactory::class);
-        if ($pageRecord['uid']) {
+        if (is_array($pageRecord) && $pageRecord['uid']) {
             // If there IS a real page
             $altText = BackendUtility::getRecordIconAltText($pageRecord, 'pages');
             $theIcon = '<span title="' . $altText . '">' . $iconFactory->getIconForRecord('pages', $pageRecord, Icon::SIZE_SMALL)->render() . '</span>';
diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/Be/PagePathViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/Be/PagePathViewHelper.php
index e7e5760499b5aac07b60e9056cb06af8337526cf..581525dc350771b1827b85bc06dd1afedb241e56 100644
--- a/typo3/sysext/fluid/Classes/ViewHelpers/Be/PagePathViewHelper.php
+++ b/typo3/sysext/fluid/Classes/ViewHelpers/Be/PagePathViewHelper.php
@@ -72,15 +72,16 @@ class PagePathViewHelper extends AbstractBackendViewHelper
         $id = GeneralUtility::_GP('id');
         $pageRecord = BackendUtility::readPageAccess($id, $GLOBALS['BE_USER']->getPagePermsClause(Permission::PAGE_SHOW));
         // Is this a real page
-        if ($pageRecord['uid']) {
-            $title = $pageRecord['_thePathFull'];
+        if ($pageRecord['_thePathFull'] ?? false) {
+            $title = (string)$pageRecord['_thePathFull'];
         } else {
-            $title = $GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'];
+            $title = (string)$GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'];
         }
         // Setting the path of the page
         $pagePath = htmlspecialchars(static::getLanguageService()->sL('LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.path')) . ': <span class="typo3-docheader-pagePath">';
         // crop the title to title limit (or 50, if not defined)
         $cropLength = empty($GLOBALS['BE_USER']->uc['titleLen']) ? 50 : $GLOBALS['BE_USER']->uc['titleLen'];
+        $cropLength = (int)$cropLength;
         $croppedTitle = GeneralUtility::fixed_lgd_cs($title, -$cropLength);
         if ($croppedTitle !== $title) {
             $pagePath .= '<abbr title="' . htmlspecialchars($title) . '">' . htmlspecialchars($croppedTitle) . '</abbr>';
diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/CObjectViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/CObjectViewHelper.php
index a5a4ae71154dc06a25aa81bc7485a035772f93a8..5c31b5e0b6d1df6f1acfabc5b92276f002ec46e0 100644
--- a/typo3/sysext/fluid/Classes/ViewHelpers/CObjectViewHelper.php
+++ b/typo3/sysext/fluid/Classes/ViewHelpers/CObjectViewHelper.php
@@ -155,7 +155,7 @@ class CObjectViewHelper extends AbstractViewHelper
             $contentObjectRenderer->setCurrentVal($data[$currentValueKey]);
         }
         $pathSegments = GeneralUtility::trimExplode('.', $typoscriptObjectPath);
-        $lastSegment = array_pop($pathSegments);
+        $lastSegment = (string)array_pop($pathSegments);
         $setup = static::getConfigurationManager()->getConfiguration(ConfigurationManagerInterface::CONFIGURATION_TYPE_FULL_TYPOSCRIPT);
         foreach ($pathSegments as $segment) {
             if (!array_key_exists($segment . '.', $setup)) {
@@ -226,7 +226,7 @@ class CObjectViewHelper extends AbstractViewHelper
                 $site = reset($sites);
             }
             $language = $globalRequest->getAttribute('language') ?? $site->getDefaultLanguage();
-            $pageArguments = $globalRequest->getAttribute('routing') ?? new PageArguments(0, 0, []);
+            $pageArguments = $globalRequest->getAttribute('routing') ?? new PageArguments(0, '0', []);
             $tsfe = GeneralUtility::makeInstance(
                 TypoScriptFrontendController::class,
                 GeneralUtility::makeInstance(Context::class),
diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/Form/AbstractFormFieldViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/Form/AbstractFormFieldViewHelper.php
index ab320384e944aa34a892fc8e4efb834896be3b5e..cc1f792b30a39464f061efab3cb2e5418b01d416 100644
--- a/typo3/sysext/fluid/Classes/ViewHelpers/Form/AbstractFormFieldViewHelper.php
+++ b/typo3/sysext/fluid/Classes/ViewHelpers/Form/AbstractFormFieldViewHelper.php
@@ -230,7 +230,7 @@ abstract class AbstractFormFieldViewHelper extends AbstractFormViewHelper
      */
     protected function getLastSubmittedFormData()
     {
-        $propertyPath = rtrim(preg_replace('/(\\]\\[|\\[|\\])/', '.', $this->getNameWithoutPrefix()), '.');
+        $propertyPath = rtrim(preg_replace('/(\\]\\[|\\[|\\])/', '.', $this->getNameWithoutPrefix()) ?? '', '.');
         $value = ObjectAccess::getPropertyPath(
             $this->renderingContext->getControllerContext()->getRequest()->getOriginalRequest()->getArguments(),
             $propertyPath
diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/Form/SelectViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/Form/SelectViewHelper.php
index d702109c4dc6e334cfb85386e99139566c447077..f91f0087c57e1b26bb7998d59ddc2ec06484939a 100644
--- a/typo3/sysext/fluid/Classes/ViewHelpers/Form/SelectViewHelper.php
+++ b/typo3/sysext/fluid/Classes/ViewHelpers/Form/SelectViewHelper.php
@@ -243,15 +243,15 @@ class SelectViewHelper extends AbstractFormFieldViewHelper
                         if (method_exists($key, '__toString')) {
                             $key = (string)$key;
                         } else {
-                            throw new Exception('Identifying value for object of class "' . get_class($value) . '" was an object.', 1247827428);
+                            throw new Exception('Identifying value for object of class "' . (is_object($value) ? get_class($value) : gettype($value)) . '" was an object.', 1247827428);
                         }
                     }
                 } elseif ($this->persistenceManager->getIdentifierByObject($value) !== null) {
                     // @todo use $this->persistenceManager->isNewObject() once it is implemented
                     $key = $this->persistenceManager->getIdentifierByObject($value);
-                } elseif (method_exists($value, '__toString')) {
+                } elseif (is_object($value) && method_exists($value, '__toString')) {
                     $key = (string)$value;
-                } else {
+                } elseif (is_object($value)) {
                     throw new Exception('No identifying value for object of class "' . get_class($value) . '" found.', 1247826696);
                 }
                 if ($this->hasArgument('optionLabelField')) {
@@ -263,7 +263,7 @@ class SelectViewHelper extends AbstractFormFieldViewHelper
                             throw new Exception('Label value for object of class "' . get_class($value) . '" was an object without a __toString() method.', 1247827553);
                         }
                     }
-                } elseif (method_exists($value, '__toString')) {
+                } elseif (is_object($value) && method_exists($value, '__toString')) {
                     $value = (string)$value;
                 } elseif ($this->persistenceManager->getIdentifierByObject($value) !== null) {
                     // @todo use $this->persistenceManager->isNewObject() once it is implemented
diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/FormViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/FormViewHelper.php
index edb3cf27825d9d3e29e9f1c99dbe8bb4fbbe7ced..bb6e54b64f51eb5ccc5a6bdbee4a3762b8e742d5 100644
--- a/typo3/sysext/fluid/Classes/ViewHelpers/FormViewHelper.php
+++ b/typo3/sysext/fluid/Classes/ViewHelpers/FormViewHelper.php
@@ -414,6 +414,7 @@ class FormViewHelper extends AbstractFormViewHelper
     {
         if (count($arguments)) {
             foreach ($arguments as $argumentName => $argumentValue) {
+                $argumentName = (string)$argumentName;
                 if (is_array($argumentValue)) {
                     $prefix = $level == 0 ? $argumentName : $currentPrefix . '[' . $argumentName . ']';
                     $this->postProcessUriArgumentsForRequestHash($argumentValue, $results, $prefix, $level + 1);
diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/Format/DateViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/Format/DateViewHelper.php
index d9f152045ce0f0275b28b0390a56e1f0cc9b091d..78b06822008337f9c93e98039c1021f2b98ec4cc 100644
--- a/typo3/sysext/fluid/Classes/ViewHelpers/Format/DateViewHelper.php
+++ b/typo3/sysext/fluid/Classes/ViewHelpers/Format/DateViewHelper.php
@@ -155,7 +155,7 @@ class DateViewHelper extends AbstractViewHelper
 
         if (!$date instanceof \DateTimeInterface) {
             try {
-                $base = $base instanceof \DateTimeInterface ? $base->format('U') : strtotime((MathUtility::canBeInterpretedAsInteger($base) ? '@' : '') . $base);
+                $base = $base instanceof \DateTimeInterface ? (int)$base->format('U') : (int)strtotime((MathUtility::canBeInterpretedAsInteger($base) ? '@' : '') . $base);
                 $dateTimestamp = strtotime((MathUtility::canBeInterpretedAsInteger($date) ? '@' : '') . $date, $base);
                 $date = new \DateTime('@' . $dateTimestamp);
                 $date->setTimezone(new \DateTimeZone(date_default_timezone_get()));
@@ -165,7 +165,7 @@ class DateViewHelper extends AbstractViewHelper
         }
 
         if (strpos($format, '%') !== false) {
-            return strftime($format, $date->format('U'));
+            return strftime($format, (int)$date->format('U'));
         }
         return $date->format($format);
     }
diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/MediaViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/MediaViewHelper.php
index 940d2bf781b93e72e71af5ccfe1972e2f8d4640e..48e41dd8b7ca08d674704f2cb3149114d4b95098 100644
--- a/typo3/sysext/fluid/Classes/ViewHelpers/MediaViewHelper.php
+++ b/typo3/sysext/fluid/Classes/ViewHelpers/MediaViewHelper.php
@@ -20,7 +20,6 @@ use TYPO3\CMS\Core\Resource\FileInterface;
 use TYPO3\CMS\Core\Resource\FileReference;
 use TYPO3\CMS\Core\Resource\Rendering\RendererRegistry;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Extbase\Domain\Model\AbstractFileFolder;
 use TYPO3\CMS\Extbase\Service\ImageService;
 use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper;
 
@@ -109,8 +108,8 @@ class MediaViewHelper extends AbstractTagBasedViewHelper
             $file = $file->getOriginalResource();
         }
 
-        if (!($file instanceof FileInterface || $file instanceof AbstractFileFolder)) {
-            throw new \UnexpectedValueException('Supplied file object type ' . get_class($file) . ' must be FileInterface or AbstractFileFolder.', 1454252193);
+        if (!$file instanceof FileInterface) {
+            throw new \UnexpectedValueException('Supplied file object type ' . get_class($file) . ' must be FileInterface.', 1454252193);
         }
 
         $fileRenderer = RendererRegistry::getInstance()->getRenderer($file);
diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/Widget/LinkViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/Widget/LinkViewHelper.php
index c3b0e17979b06620f5e07c277352d99534a29fc6..ecbd5f9949813f13f6a464e018d60ce6f56781af 100644
--- a/typo3/sysext/fluid/Classes/ViewHelpers/Widget/LinkViewHelper.php
+++ b/typo3/sysext/fluid/Classes/ViewHelpers/Widget/LinkViewHelper.php
@@ -97,7 +97,7 @@ class LinkViewHelper extends AbstractTagBasedViewHelper
         $arguments['type'] = 7076;
         $arguments['fluid-widget-id'] = $this->renderingContext->getControllerContext()->getRequest()->getWidgetContext()->getAjaxWidgetIdentifier();
         $arguments['action'] = $action;
-        return '?' . http_build_query($arguments, null, '&');
+        return '?' . http_build_query($arguments, '', '&');
     }
 
     /**
diff --git a/typo3/sysext/fluid/Classes/ViewHelpers/Widget/UriViewHelper.php b/typo3/sysext/fluid/Classes/ViewHelpers/Widget/UriViewHelper.php
index c3fc99292f6e76f9d9572ec5204a859093c76016..680e6f7e106bb3d73fff5b873a7aed13aeda19b8 100644
--- a/typo3/sysext/fluid/Classes/ViewHelpers/Widget/UriViewHelper.php
+++ b/typo3/sysext/fluid/Classes/ViewHelpers/Widget/UriViewHelper.php
@@ -87,7 +87,7 @@ class UriViewHelper extends AbstractViewHelper
         $arguments['type'] = 7076;
         $arguments['fluid-widget-id'] = $controllerContext->getRequest()->getWidgetContext()->getAjaxWidgetIdentifier();
         $arguments['action'] = $action;
-        return '?' . http_build_query($arguments, null, '&');
+        return '?' . http_build_query($arguments, '', '&');
     }
 
     /**