diff --git a/typo3/sysext/install/Classes/SystemEnvironment/Check.php b/typo3/sysext/install/Classes/SystemEnvironment/Check.php index 75308c88e3edcc8571b805773d650fdb3fcccde5..8cd8b90964f04051ef3b1b290e63daf50acf9ac6 100644 --- a/typo3/sysext/install/Classes/SystemEnvironment/Check.php +++ b/typo3/sysext/install/Classes/SystemEnvironment/Check.php @@ -70,6 +70,13 @@ class Check implements CheckInterface 'zlib', ]; + /** + * @var string[] + */ + protected $suggestedPhpExtensions = [ + 'fileinfo' => 'This extension is used for proper file type detection in the File Abstraction Layer.', + ]; + /** * Get all status information as array with status objects * @@ -96,7 +103,11 @@ class Check implements CheckInterface $this->checkWindowsApacheThreadStackSize(); foreach ($this->requiredPhpExtensions as $extension) { - $this->checkRequiredPhpExtension($extension); + $this->checkPhpExtension($extension); + } + + foreach ($this->suggestedPhpExtensions as $extension => $purpose) { + $this->checkPhpExtension($extension, false, $purpose); } $this->checkPcreVersion(); @@ -637,23 +648,26 @@ class Check implements CheckInterface } /** - * Check if a specific required PHP extension is loaded + * Checks if a specific PHP extension is loaded. * * @param string $extension + * @param bool $required + * @param string $purpose */ - protected function checkRequiredPhpExtension($extension) + protected function checkPhpExtension(string $extension, bool $required = true, string $purpose = '') { if (!extension_loaded($extension)) { $this->messageQueue->enqueue(new FlashMessage( - 'TYPO3 CMS uses PHP extension ' . $extension . ' but it is not loaded' - . ' in your environment. Change your environment to provide this extension.', - 'PHP extension ' . $extension . ' not loaded', - FlashMessage::ERROR + 'TYPO3 uses the PHP extension "' . $extension . '" but it is not loaded' + . ' in your environment. Change your environment to provide this extension. ' + . $purpose, + 'PHP extension "' . $extension . '" not loaded', + $required ? FlashMessage::ERROR : FlashMessage::WARNING )); } else { $this->messageQueue->enqueue(new FlashMessage( '', - 'PHP extension ' . $extension . ' loaded' + 'PHP extension "' . $extension . '" loaded' )); } }