diff --git a/include/php_setup.inc b/include/php_setup.inc
index e35f28818610ffafc49a9c916091334cedfee43e..1c4ce0302154cbf0d3583516f2c85ad21a0ff10a 100644
--- a/include/php_setup.inc
+++ b/include/php_setup.inc
@@ -258,8 +258,8 @@ function gosaRaiseError($errno, $errstr, $errfile, $errline)
   $error_collector_mailto .= $mailto_trace;
 
   /* Flush in case of fatal errors */
-  set_error_handler('gosaRaiseError', E_WARNING | E_NOTICE | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_STRICT);
   if (preg_match('/^fatal/i', $errstr) || (PHP_ERROR_FATAL == 'TRUE')) {
+    session::destroy();
     if (PHP_ERROR_FATAL == 'TRUE') {
       $error_collector = str_replace('display: none;', '', $error_collector);
     }
@@ -267,6 +267,8 @@ function gosaRaiseError($errno, $errstr, $errfile, $errline)
     flush();
     exit;
   }
+
+  set_error_handler('gosaRaiseError', E_WARNING | E_NOTICE | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_STRICT);
 }
 
 /*!