Fixed bug #17732: Install Tool doing Fatal error when APC PHP module is loaded (no...
authorbaschny <baschny@709f56b5-9817-0410-a4d7-c38de5d9e867>
Fri, 25 Feb 2011 16:30:29 +0000 (16:30 +0000)
committerbaschny <baschny@709f56b5-9817-0410-a4d7-c38de5d9e867>
Fri, 25 Feb 2011 16:30:29 +0000 (16:30 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/trunk@10636 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
typo3/sysext/install/mod/class.tx_install_session.php

index f5c845e..2c60182 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-02-25  Ernesto Baschny  <ernst@cron-it.de>
+
+       * Fixed bug #17732: Install Tool doing Fatal error when APC PHP module is loaded (no session is stored)
+
 2011-02-25  Stanislas Rolland  <typo3@sjbr.ca>
 
        * Added feature #17761: htmlArea RTE: Defer access to stylesheets
index 8c5c06f..1056c9c 100644 (file)
@@ -380,6 +380,22 @@ class tx_install_session {
                return TRUE;
        }
 
+       /**
+        * Writes the session data at the end, to overcome a PHP APC bug.
+        *
+        * Writes the session data in a proper context that is not affected by the APC bug:
+        * http://pecl.php.net/bugs/bug.php?id=16721.
+        *
+        * This behaviour was introduced in #17511, where self::write() made use of t3lib_div
+        * which due to the APC bug throws a "Fatal error: Class 't3lib_div' not found"
+        * (and the session data is not saved). Calling session_write_close() at this point
+        * seems to be the most easy solution, acording to PHP author.
+        *
+        * @return void
+        */
+       public function __destruct() {
+               session_write_close();
+       }
 }
 
 if (defined('TYPO3_MODE') && isset($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['ext/install/mod/class.tx_install_session.php'])) {