diff --git a/config/config.sample.php b/config/config.sample.php
index 199c9248c51..a5feff509ba 100755
--- a/config/config.sample.php
+++ b/config/config.sample.php
@@ -19,6 +19,7 @@ $CONFIG = array(
"knowledgebaseurl" => "",
"appstoreenabled" => true,
"appstoreurl" => "",
-// "datadirectory" => ""
+// "datadirectory" => "",
+"sysinfoexception" => true
);
?>
diff --git a/core/css/styles.css b/core/css/styles.css
index f5a181c4529..6c00b571bab 100644
--- a/core/css/styles.css
+++ b/core/css/styles.css
@@ -131,3 +131,6 @@ li.error { width:640px; margin:4em auto; padding:1em 1em 1em 4em; background:#ff
.separator { display: inline; border-left: 1px solid #d3d3d3; border-right: 1px solid #fff; height: 10px; width:0px; margin: 4px; }
a.bookmarklet { background-color: #ddd; border:1px solid #ccc; padding: 5px;padding-top: 0px;padding-bottom: 2px; text-decoration: none; margin-top: 5px }
+
+.exception{color: #000000;}
+.exception textarea{width:95%;height: 200px;background:#ffe;border:0;}
diff --git a/core/templates/exception.php b/core/templates/exception.php
new file mode 100644
index 00000000000..7f58ce252cf
--- /dev/null
+++ b/core/templates/exception.php
@@ -0,0 +1,30 @@
+
+ -
+
+ We're sorry, but something went terribly wrong.
+
+ Bugtracker, please copy the following informations into the description.
';
+ }else{
+ echo 'Your administrator has disabled systeminformations.';
+ }
+ ?>
+
+
+
+
\ No newline at end of file
diff --git a/lib/exception.php b/lib/exception.php
new file mode 100644
index 00000000000..b4724e7c8c2
--- /dev/null
+++ b/lib/exception.php
@@ -0,0 +1,74 @@
+.
+ *
+ */
+class OC_Exception extends Exception{
+
+ function __construct($message = null, $code = 0, $file = null, $line = null){
+ parent::__construct($message, $code);
+ if(!is_null($file)){
+ $this->file = $file;
+ }
+ if(!is_null($line)){
+ $this->line = $line;
+ }
+ $this->writelog();
+ }
+
+ private function writelog(){
+ @OC_Log::write(OC_App::getCurrentApp(), $this->getMessage() . '-' . $this->getFile() . '-' . $this->getLine(), OC_Log::FATAL);
+ }
+
+ private function generatesysinfo(){
+ return array('phpversion' => PHP_VERSION,
+ 'os' => php_uname('s'),
+ 'osrelease' => php_uname('r'),
+ 'osarchitecture' => php_uname('m'),
+ 'phpserverinterface' => php_sapi_name(),
+ 'serverprotocol' => $_SERVER['SERVER_PROTOCOL'],
+ 'requestmethod' => $_SERVER['REQUEST_METHOD'],
+ 'https' => ($_SERVER['HTTPS']==''?'false':'true'),
+ 'database'=>(@OC_Config::getValue('dbtype')!=''?@OC_Config::getValue('dbtype'):'')
+ );
+ }
+
+ function __toString(){
+ $tmpl = new OC_Template('core', 'exception', 'guest');
+ $tmpl->assign('showsysinfo', true);
+ $tmpl->assign('message', $this->getMessage());
+ $tmpl->assign('code', $this->getCode());
+ $tmpl->assign('file', $this->getFile());
+ $tmpl->assign('line', $this->getLine());
+ $tmpl->assign('sysinfo', $this->generatesysinfo());
+ $tmpl->printPage();
+ }
+}
+
+function oc_exceptionhandler($exception){
+ throw new OC_Exception($exception->getMessage(), $exception->getCode(), $exception->getFile(), $exception->getLine());
+ return true;
+}
+
+function oc_errorhandler(){
+
+}
+set_exception_handler('oc_exceptionhandler');
+set_error_handler('oc_errorhandler');
+error_reporting(E_ERROR | E_WARNING | E_PARSE);
\ No newline at end of file