Index: typo3/sysext/install/mod/class.tx_install.php
===================================================================
--- typo3/sysext/install/mod/class.tx_install.php (revision 8265)
+++ typo3/sysext/install/mod/class.tx_install.php (working copy)
@@ -311,7 +311,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
@@ -3863,7 +3868,7 @@
$this->isBasicComplete($headCode);
- if ($result) {
+ if ($result) {
$this->message($headCode,'User created','
Username: '.htmlspecialchars($username).'
Password: '.htmlspecialchars($pass).'
',
@@ -4948,6 +4953,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 '
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(); }