Index: typo3/sysext/install/mod/class.tx_install.php =================================================================== --- typo3/sysext/install/mod/class.tx_install.php (revision 8132) +++ typo3/sysext/install/mod/class.tx_install.php (working copy) @@ -261,6 +261,11 @@ $this->mode = t3lib_div::_GP('mode'); if ($this->mode !== '123') { $this->mode = ''; + } else { + $missingPHPModules = $this->getMissingPHPModules(); + if (count($missingPHPModules) > 0) { + die('The following PHP module(s) is/are missing: ' . implode(', ', $missingPHPModules)); + } } if (t3lib_div::_GP('step') === 'go') { $this->step = 'go'; @@ -4111,6 +4116,52 @@ 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() { + // filter, gd, json, mysql, pcre, session, spl, xml, zlib + $result = array(); + if (!function_exists('filter_list')) { + // filter_list is added by filter module in PHP >= 5.2.0 + $result[] = 'filter'; + } + if (!function_exists('gd_info')) { + // gd_info is added by gd module in PHP >= 4.3.0 + $result[] = 'gd'; + } + if (!function_exists('json_decode')) { + // json_decode is added by json module in PHP >= 5.2.0 / PECL json >= 1.2.0 + $result[] = 'json'; + } + if (!function_exists('mysql_connect')) { + // mysql_connect is added by mysql module in PHP 4/5 + $result[] = 'mysql'; + } + if (!function_exists('preg_match')) { + // preg_match is added by pcre module in PHP 4/5 + $result[] = 'pcre'; + } + if (!function_exists('session_start')) { + // session_start is added by session module in PHP 4/5 + $result[] = 'session'; + } + if (!function_exists('spl_classes')) { + // spl_classes is added by spl module in PHP 5 + $result[] = 'spl'; + } + if (!function_exists('xml_parse')) { + // xml_parse is added by xml module in PHP 4/5 + $result[] = 'xml parser'; + } + if (!function_exists('gzinflate')) { + // gzinflate is added by zlib module in PHP >= 4.0.4 + $result[] = 'zlib'; + } + return $result; + } @@ -4120,7 +4171,6 @@ - /***************************************** * * ABOUT the isXXX functions.