Module: nagvis
Branch: master
Commit: b2360c33191769651b9e9311fe246d0ded60e669
URL:    
http://nagvis.git.sourceforge.net/git/gitweb.cgi?p=nagvis/nagvis;a=commit;h=b2360c33191769651b9e9311fe246d0ded60e669

Author: Lars Michelsen <[email protected]>
Date:   Wed Dec 29 10:54:52 2010 +0100

Recoded php error handler to use exceptions; Suppressing ps_files_cleanup_dir 
errors

---

 ChangeLog                                          |    1 +
 share/frontend/nagvis-js/index.php                 |    1 +
 share/frontend/nagvis-js/js/nagvis.js              |    4 +-
 share/frontend/wui/index.php                       |    1 +
 share/server/core/ajax_handler.php                 |    2 +-
 share/server/core/classes/CoreSessionHandler.php   |   13 ++++++++-
 ...ajaxErrorHandler.php => nagvisErrorHandler.php} |   25 ++++++++++++++++----
 share/userfiles/templates/default.css              |    5 ++++
 8 files changed, 42 insertions(+), 10 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 68f6487..c79f53c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -22,6 +22,7 @@ Core
   * All map objects need to have an object id which needs to be unique on
     each map. All map objects which have no object id defined will ge one
     created. This makes migration easier.
+  * Catching ps_files_cleanup_dir error message (strange error debian/ubuntu)
 
 Automap
   * Made automap coord parsing regex resistent against html entities in the URL
diff --git a/share/frontend/nagvis-js/index.php 
b/share/frontend/nagvis-js/index.php
index bbea357..2741427 100644
--- a/share/frontend/nagvis-js/index.php
+++ b/share/frontend/nagvis-js/index.php
@@ -33,6 +33,7 @@ require('defines/nagvis-js.php');
 require('../../server/core/functions/autoload.php');
 require('../../server/core/functions/debug.php');
 require('../../server/core/functions/oldPhpVersionFixes.php');
+require('../../server/core/functions/nagvisErrorHandler.php');
 require('../../server/core/classes/CoreExceptions.php');
 
 if (PROFILE) profilingStart();
diff --git a/share/frontend/nagvis-js/js/nagvis.js 
b/share/frontend/nagvis-js/js/nagvis.js
index 565128c..b1dd140 100644
--- a/share/frontend/nagvis-js/js/nagvis.js
+++ b/share/frontend/nagvis-js/js/nagvis.js
@@ -776,8 +776,8 @@ function handleJSError(sMsg, sUrl, iLine) {
        var oMsg = {};
        oMsg.type = 'CRITICAL';
        oMsg.message = "Javascript error occured:\n " + sMsg + " "
-                      + sUrl + " (" + iLine + ")<br /><br /><font 
style='font-size:10px'>- Stacktrace - <br />"
-                      + printStackTrace().join("<br />") + '</font>';
+                      + sUrl + " (" + iLine + ")<br /><br /><code>- Stacktrace 
- <br />"
+                      + printStackTrace().join("<br />") + '</code>';
        oMsg.title = "Javascript error";
        
        // Handle application message/error
diff --git a/share/frontend/wui/index.php b/share/frontend/wui/index.php
index 3112f8e..ff26243 100644
--- a/share/frontend/wui/index.php
+++ b/share/frontend/wui/index.php
@@ -37,6 +37,7 @@ require('defines/wui.php');
 require("../../server/core/functions/autoload.php");
 require("../../server/core/functions/debug.php");
 require("../../server/core/functions/oldPhpVersionFixes.php");
+require('../../server/core/functions/nagvisErrorHandler.php');
 require('../../server/core/classes/CoreExceptions.php');
 
 // This defines wether the GlobalMessage prints HTML or ajax error messages
diff --git a/share/server/core/ajax_handler.php 
b/share/server/core/ajax_handler.php
index e0e88e9..6b20112 100644
--- a/share/server/core/ajax_handler.php
+++ b/share/server/core/ajax_handler.php
@@ -30,7 +30,7 @@ require('../../server/core/defines/matches.php');
 require('../../server/core/functions/autoload.php');
 require('../../server/core/functions/debug.php');
 require('../../server/core/functions/oldPhpVersionFixes.php');
-require('../../server/core/functions/ajaxErrorHandler.php');
+require('../../server/core/functions/nagvisErrorHandler.php');
 require('../../server/core/classes/CoreExceptions.php');
 
 if (PROFILE) profilingStart();
diff --git a/share/server/core/classes/CoreSessionHandler.php 
b/share/server/core/classes/CoreSessionHandler.php
index 556ee25..c3d6354 100644
--- a/share/server/core/classes/CoreSessionHandler.php
+++ b/share/server/core/classes/CoreSessionHandler.php
@@ -46,10 +46,19 @@ class CoreSessionHandler {
                
                // Set custom params for the session cookie
                session_set_cookie_params(0, $sPath, $sDomain);
-               
+
                // Start a session for the user when not started yet
                if(!isset($_SESSION)) {
-                       session_start();
+                       try {
+                               session_start();
+                       } catch(ErrorException $e) {
+                               // Catch and suppress session cleanup errors. 
This is a problem
+                               // especially on current debian/ubuntu:
+                               //   PHP error in ajax request handler: Error: 
(8) session_start():
+                               //   ps_files_cleanup_dir: 
opendir(/var/lib/php5) failed: Permission denied (13)
+                               if(strpos($e->getMessage(), 
'ps_files_cleanup_dir') === false)
+                                       throw $e;
+                       }
                        
                        // Store the creation time of the session
                        $this->set('sessionExpires', time()+$iDuration);
diff --git a/share/server/core/functions/ajaxErrorHandler.php 
b/share/server/core/functions/nagvisErrorHandler.php
similarity index 66%
rename from share/server/core/functions/ajaxErrorHandler.php
rename to share/server/core/functions/nagvisErrorHandler.php
index 00f6eca..5296665 100644
--- a/share/server/core/functions/ajaxErrorHandler.php
+++ b/share/server/core/functions/nagvisErrorHandler.php
@@ -38,19 +38,34 @@ function ajaxError($errno, $errstr = '', $file = '', $line 
= '') {
        die();
 }
 
-function ajaxException($OBJ) {
+function nagvisException($OBJ) {
        try {
-               echo "Error: ".$OBJ->getMessage();
+               if(get_class($OBJ) == 'ErrorException') {
+                       echo "Error: (".$OBJ->getCode().") ".$OBJ->getMessage()
+                           ." (".$OBJ->getFile().":".$OBJ->getLine().")<br 
/><br />\n ";
+                       echo "<code>".str_replace("\n", "<br />\n", 
$OBJ->getTraceAsString())."</code>";
+               } else {
+                       echo "Error: ".$OBJ->getMessage();
+               }
+
                die();
        } catch(Exception $e) {
-               echo "Error: Unexpected Problem in Exception Handler!";         
+               echo "Error: Unexpected Problem in Exception Handler!: ". 
$e->getMessage();             
                die();
        }
 }
 
+function nagvisExceptionErrorHandler($errno, $errstr, $errfile, $errline ) {
+       // Use current error_reporting settings to skip unwanted errors
+       if(!(error_reporting() & $errno))
+               return false;
+       
+       throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
+}
+set_error_handler("nagvisExceptionErrorHandler");
+
 // Enable custom error handling
-set_error_handler('ajaxError');
 if(function_exists('set_exception_handler')) {
-       set_exception_handler('ajaxException');
+       set_exception_handler('nagvisException');
 }
 ?>
diff --git a/share/userfiles/templates/default.css 
b/share/userfiles/templates/default.css
index 9c05349..be0add9 100644
--- a/share/userfiles/templates/default.css
+++ b/share/userfiles/templates/default.css
@@ -348,6 +348,11 @@ div.infopage a:hover {
        background-color: #CCE5FF;
 }
 
+#messageBoxDiv code {
+       text-align: left;
+       font-size: 10px;
+}
+
 /*
  * popupWindow css
  */


------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and, 
should the need arise, upgrade to a full multi-node Oracle RAC database 
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
Nagvis-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/nagvis-checkins

Reply via email to