Index: typo3/sysext/install/mod/class.tx_install.php =================================================================== --- typo3/sysext/install/mod/class.tx_install.php (revision 8810) +++ typo3/sysext/install/mod/class.tx_install.php (working copy) @@ -231,6 +231,18 @@ 'logout' => 'Logout from Install Tool', ); + protected $requiredModules = array( // PHP modules which are required + 'filter', + 'gd', + 'json', + 'mysql', + 'pcre', + 'session', + 'SPL', + 'standard', + 'xml', + 'zlib' + ); @@ -261,6 +273,12 @@ $this->mode = t3lib_div::_GP('mode'); if ($this->mode !== '123') { $this->mode = ''; + } else { + $missingPHPModules = $this->getMissingPHPModules(); + if (count($missingPHPModules) > 0) { + t3lib_BEfunc::typo3PrintError('TYPO3 Installation Error', 'The following PHP module(s) is/are missing: ' . implode(', ', $missingPHPModules)); + die(); + } } if (t3lib_div::_GP('step') === 'go') { $this->step = 'go'; @@ -4115,8 +4133,41 @@ return (is_array($test) ? 1 : 0); } + /** + * Checks if the essential PHP modules are loaded + * + * @return array list of modules which are missing + */ + protected function getMissingPHPModules() { + // Hook to adjust the required PHP modules in the 1-2-3 installer + if (is_array ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install/mod/class.tx_install.php']['requiredModules'])) { + foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/install/mod/class.tx_install.php']['requiredModules'] as $classData) { + $hookObject = t3lib_div::getUserObj($classData); + $this->requiredModules = $hookObject->setRequiredModules($this); + } + } + $result = array(); + foreach ($this->requiredModules as $module) { + if (is_array($module)) { + $detectedSubmodules = FALSE; + foreach ($module as $submodule) { + if (extension_loaded($submodule)) { + $detectedSubmodules = TRUE; + } + } + if ($detectedSubmodules === FALSE) { + $result[] = 'one of: (' . implode(', ', $module) . ')'; + } + } else { + if (!extension_loaded($module)) { + $result[] = $module; + } + } + } + return $result; + } @@ -4125,6 +4176,7 @@ + /***************************************** * * ABOUT the isXXX functions.