From 4337087a3d05022760c968deae4b7a5341755bf8 Mon Sep 17 00:00:00 2001 From: Jonathan IROULIN <joniroutypo3@gmail.com> Date: Tue, 28 Nov 2017 11:18:25 +0100 Subject: [PATCH] [TASK] Install Tool: Display a warning if PHP fileinfo extension is not loaded Show a warning message during the installation process if the PHP fileinfo extension is not loaded. It only displays a warning because the fileinfo extension is just a suggestions and not required. The fileinfo extension is useful to extract file metadata. Resolves: #78702 Releases: master, 8.7 Change-Id: Iea0fa087d96d5615056308b7b2fef082b9154a2d Reviewed-on: https://review.typo3.org/54823 Tested-by: TYPO3com <no-reply@typo3.com> Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch> Tested-by: Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by: Markus Klein <markus.klein@typo3.org> Tested-by: Markus Klein <markus.klein@typo3.org> --- .../Classes/SystemEnvironment/Check.php | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/typo3/sysext/install/Classes/SystemEnvironment/Check.php b/typo3/sysext/install/Classes/SystemEnvironment/Check.php index 75308c88e3ed..8cd8b90964f0 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' )); } } -- GitLab