Index: typo3/sysext/install/mod/class.tx_install_session.php =================================================================== --- typo3/sysext/install/mod/class.tx_install_session.php (revision 8459) +++ typo3/sysext/install/mod/class.tx_install_session.php (working copy) @@ -86,7 +86,7 @@ $sessionSavePath = $this->getSessionSavePath(); if (!is_dir($sessionSavePath)) { if (!t3lib_div::mkdir($sessionSavePath)) { - die('Could not create session folder in typo3temp/. Make sure it is writeable!'); + throw new Exception('

Could not create session folder in typo3temp/.

Make sure it is writeable!

'); } t3lib_div::writeFile($sessionSavePath.'/.htaccess', 'Order deny, allow'."\n".'Deny from all'."\n"); $indexContent = ''; @@ -113,6 +113,16 @@ if (version_compare(phpversion(), '5.2', '<')) { ini_set('session.cookie_httponly', TRUE); } + if (ini_get('session.auto_start')) { + $sessionCreationError = '

Error: session.auto-start is enabled

'; + $sessionCreationError .= '

The PHP option session.auto-start is enabled. Disable this option in php.ini or .htaccess:

'; + $sessionCreationError .= '
php_value session.auto_start Off
'; + throw new Exception($sessionCreationError); + } else if (defined('SID')) { + $sessionCreationError = '

Error: Session already started by session_start().

'; + $sessionCreationError .= '

Make sure no installed extension is starting a session in its ext_localconf.php or ext_tables.php.

'; + throw new Exception($sessionCreationError); + } session_start(); } Index: typo3/sysext/install/mod/class.tx_install.php =================================================================== --- typo3/sysext/install/mod/class.tx_install.php (revision 8459) +++ typo3/sysext/install/mod/class.tx_install.php (working copy) @@ -309,7 +309,12 @@ die('Install Tool needs to write to typo3temp/. Make sure this directory is writeable by your webserver: '. $this->typo3temp_path); } - $this->session = t3lib_div::makeInstance('tx_install_session'); + try { + $this->session = t3lib_div::makeInstance('tx_install_session'); + } catch (Exception $exception) { + $this->outputErrorAndExit($exception->getMessage()); + + } // ******************* // Check authorization @@ -2638,8 +2643,8 @@ */ function getGDSoftwareInfo() { return trim(' - You can get GDLib in the PNG version from ' . $this->linkIt('http://www.libgd.org/') . - '.
FreeType is for download at ' . $this->linkIt('http://www.freetype.org/') . + You can get GDLib in the PNG version from ' . $this->linkIt('http://www.libgd.org/') . + '.
FreeType is for download at ' . $this->linkIt('http://www.freetype.org/') . '.
Generally, TYPO3 packages are listed at ' . $this->linkIt('http://typo3.org/download/packages/') . '.' ); } @@ -4953,6 +4958,23 @@ } /** + * Outputs an error and dies. + * Should be used by all errors that occur before even starting the install tool process. + * + * @param string The content of the error + * @return void + */ + function outputErrorAndExit($content, $title = 'Install Tool error') { + // Output the warning message and exit + header('Content-Type: text/html; charset=utf-8'); + header('Cache-Control: no-cache, must-revalidate'); + header('Pragma: no-cache'); + echo '

'.$title.'

'; + echo $content; + exit(); + } + + /** * Sends the page to the client. * * @param string The HTML page