Commit 7d093402d26bdcc9d6f587a15dfd2fc4a285a75d
1 parent
f88492af
KTS-3148
"Custom Error Page cannot be disabled." Fixed. Cleaned up custom error page functionality. Committed By: Jonathan Byrne Reviewed By: Megan Watson git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@8368 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
7 changed files
with
171 additions
and
85 deletions
config/config.ini
| ... | ... | @@ -398,9 +398,12 @@ warningThreshold=10 |
| 398 | 398 | urgentThreshold=5 |
| 399 | 399 | |
| 400 | 400 | [CustomErrorMessages] |
| 401 | -;Turn custom error messages on or off here // account wide | |
| 402 | -customerrormessages=on | |
| 403 | -;name or url of custom error page | |
| 401 | +;Turn custom error messages on or off here. | |
| 402 | +customerrormessages=off | |
| 403 | +;name or url of custom error page. | |
| 404 | 404 | customerrorpagepath=customerrorpage.php |
| 405 | -;Turn custom error handler on or off | |
| 405 | +;Turn custom error handler on or off. | |
| 406 | +;The custom error handler will log any non php errors caught | |
| 407 | +;by the custom error handler if it is turned on. | |
| 408 | +;Php errors are always logged by php itself. | |
| 406 | 409 | customerrorhandler=on | ... | ... |
config/dmsDefaults.php
| ... | ... | @@ -97,6 +97,7 @@ if (!defined('PATH_SEPARATOR')) { |
| 97 | 97 | } |
| 98 | 98 | |
| 99 | 99 | require_once(KT_LIB_DIR . '/Log.inc'); |
| 100 | +require_once(KT_LIB_DIR . '/validation/customerror.php'); | |
| 100 | 101 | |
| 101 | 102 | // {{{ KTInit |
| 102 | 103 | class KTInit { |
| ... | ... | @@ -388,18 +389,27 @@ class KTInit { |
| 388 | 389 | |
| 389 | 390 | // }}} |
| 390 | 391 | |
| 391 | -function catchFatalErrors($p_OnOff='On'){ | |
| 392 | - ini_set('display_errors','On'); | |
| 393 | - $phperror='><div id="phperror" style="display:none">'; | |
| 394 | - ini_set('error_prepend_string',$phperror); | |
| 395 | - | |
| 396 | - $sUrl = KTInit::guessRootUrl(); | |
| 397 | - global $default; | |
| 398 | - $sRootUrl = ($default->sslEnabled ? 'https' : 'http') .'://'.$_SERVER['HTTP_HOST'].$sUrl; | |
| 399 | - | |
| 400 | - $phperror='</div>><form name="catcher" action="'.$sRootUrl.'/customerrorpage.php" method="post" ><input type="hidden" name="fatal" value=""></form> | |
| 401 | - <script> document.catcher.fatal.value = document.getElementById("phperror").innerHTML; document.catcher.submit();</script>'; | |
| 402 | - ini_set('error_append_string',$phperror); | |
| 392 | +function catchFatalErrors() | |
| 393 | +{ | |
| 394 | + | |
| 395 | + $CustomErrorPage = KTCustomErrorViewer::getCustomErrorRedirectPage(); | |
| 396 | + if($CustomErrorPage != '0') | |
| 397 | + { | |
| 398 | + ini_set('display_errors','On'); | |
| 399 | + $phperror='><div id="phperror" style="display:none">'; | |
| 400 | + ini_set('error_prepend_string',$phperror); | |
| 401 | + | |
| 402 | + $sUrl = KTInit::guessRootUrl(); | |
| 403 | + global $default; | |
| 404 | + $sRootUrl = ($default->sslEnabled ? 'https' : 'http') .'://'.$_SERVER['HTTP_HOST'].$sUrl; | |
| 405 | + | |
| 406 | + $CustomErrorPage = basename($CustomErrorPage); | |
| 407 | + | |
| 408 | + $phperror='</div>><form name="catcher" action="'.$sRootUrl.'/'.$CustomErrorPage.'" method="post" ><input type="hidden" name="fatal" value=""></form> | |
| 409 | + <script> document.catcher.fatal.value = document.getElementById("phperror").innerHTML; document.catcher.submit();</script>'; | |
| 410 | + ini_set('error_append_string',$phperror); | |
| 411 | + } | |
| 412 | + | |
| 403 | 413 | } |
| 404 | 414 | |
| 405 | 415 | |
| ... | ... | @@ -704,21 +714,6 @@ require_once(KT_LIB_DIR . '/util/ktutil.inc'); |
| 704 | 714 | |
| 705 | 715 | require_once(KT_LIB_DIR . '/ktentity.inc'); |
| 706 | 716 | |
| 707 | -//$KTInit->catchFatalErrors(); | |
| 708 | - | |
| 709 | -if (phpversion()<5){ | |
| 710 | - | |
| 711 | - $sErrorPage = 'http://'.$_SERVER['HTTP_HOST'].'/'.'customerrorpage.php'; | |
| 712 | - | |
| 713 | - session_start(); | |
| 714 | - | |
| 715 | - $_SESSION['sErrorMessage'] = 'KnowledgeTree now requires that PHP version 5 is installed. PHP version 4 is no longer supported.'; | |
| 716 | - | |
| 717 | - | |
| 718 | - header('location:'. $sErrorPage ) ; | |
| 719 | - | |
| 720 | -} | |
| 721 | - | |
| 722 | 717 | require_once(KT_LIB_DIR . '/config/config.inc.php'); |
| 723 | 718 | require_once(KT_DIR . '/search2/indexing/indexerCore.inc.php'); |
| 724 | 719 | |
| ... | ... | @@ -732,6 +727,24 @@ if (isset($GLOBALS['kt_test'])) { |
| 732 | 727 | } |
| 733 | 728 | |
| 734 | 729 | $oKTConfig =& KTConfig::getSingleton(); |
| 730 | + | |
| 731 | +if($oKTConfig->get('CustomErrorMessages/customerrormessages') == 'on') | |
| 732 | +{ | |
| 733 | + $KTInit->catchFatalErrors(); | |
| 734 | +} | |
| 735 | + | |
| 736 | +if (phpversion()<5){ | |
| 737 | + | |
| 738 | + $sErrorPage = 'http://'.$_SERVER['HTTP_HOST'].'/'.'customerrorpage.php'; | |
| 739 | + | |
| 740 | + session_start(); | |
| 741 | + | |
| 742 | + $_SESSION['sErrorMessage'] = 'KnowledgeTree now requires that PHP version 5 is installed. PHP version 4 is no longer supported.'; | |
| 743 | + | |
| 744 | + | |
| 745 | + header('location:'. $sErrorPage ) ; | |
| 746 | + | |
| 747 | +} | |
| 735 | 748 | $KTInit->setupServerVariables(); |
| 736 | 749 | |
| 737 | 750 | // instantiate log | ... | ... |
customerrorpage.php
| ... | ... | @@ -13,32 +13,39 @@ if (array_key_exists('Error_MessageOne', $_POST) && array_key_exists('Error_Mess |
| 13 | 13 | } |
| 14 | 14 | |
| 15 | 15 | session_start(); |
| 16 | -require_once("config/dmsDefaults.php"); | |
| 16 | + | |
| 17 | 17 | |
| 18 | 18 | if (array_key_exists('sErrorMessage', $_SESSION)) |
| 19 | 19 | { |
| 20 | -$phperror = $_SESSION['sErrorMessage']; | |
| 20 | + $phperror = $_SESSION['sErrorMessage']; | |
| 21 | 21 | } |
| 22 | 22 | |
| 23 | -global $default; | |
| 24 | - | |
| 25 | -$sUrl = $default->rootUrl; | |
| 23 | +//Finding root Url | |
| 24 | +$sHost = $_SERVER['HTTP_HOST']; | |
| 25 | +$sScriptName = dirname($_SERVER['SCRIPT_NAME']); | |
| 26 | +$sRoot = $sHost.$sScriptName; | |
| 27 | +$bSSLEnabled = false; | |
| 28 | +if ($_SERVER['HTTPS'] === 'on') | |
| 29 | +{ | |
| 30 | + $bSSLEnabled = true; | |
| 31 | +} | |
| 32 | +$sRootUrl = ($bSSLEnabled ? 'https://' : 'http://').$sRoot; | |
| 26 | 33 | |
| 27 | 34 | ?> |
| 28 | 35 | |
| 29 | 36 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html> |
| 30 | 37 | <head> |
| 31 | 38 | <title>Knowledgetree - Desklet</title> |
| 32 | - <link rel="stylesheet" type="text/css" href="<?php echo $sUrl ?>/resources/css/errors.css" /> | |
| 39 | + <link rel="stylesheet" type="text/css" href="<?php echo $sRootUrl ?>/resources/css/errors.css" /> | |
| 33 | 40 | |
| 34 | 41 | <script type="text/javascript"> |
| 35 | 42 | |
| 36 | 43 | function Click() |
| 37 | 44 | { |
| 38 | -var open = document.getElementById('exp'); | |
| 39 | -open.style.display = 'block'; | |
| 40 | -var border = document.getElementById('error-container'); | |
| 41 | -border.style.height = '250px'; | |
| 45 | + var open = document.getElementById('exp'); | |
| 46 | + open.style.display = 'block'; | |
| 47 | + var border = document.getElementById('error-container'); | |
| 48 | + border.style.height = '250px'; | |
| 42 | 49 | } |
| 43 | 50 | |
| 44 | 51 | </script> |
| ... | ... | @@ -53,7 +60,7 @@ border.style.height = '250px'; |
| 53 | 60 | |
| 54 | 61 | <h1>Error!! - You have encountered a problem starting your document management system.</h1> |
| 55 | 62 | <p><h2>Please contact your systems administrator</h2></p> |
| 56 | - <p>For more details, click here <img src="<?php echo $sUrl ?>/resources/graphics/info.gif" style="cursor: pointer;" onclick="Click()" /><div id ="exp" style="display: none; "> <?php if(isset($sErrorMessage)){ echo $sErrorMessage; }else if(isset($posted)){ echo $posted; } else if($phperror){ echo $phperror; } ?></div></p> | |
| 63 | + <p>For more details, click here <img src="<?php echo $sRootUrl ?>/resources/graphics/info.gif" style="cursor: pointer;" onclick="Click()" /><div id ="exp" style="display: none; "> <?php if(isset($sErrorMessage)){ echo $sErrorMessage; }else if(isset($posted)){ echo $posted; } else if($phperror){ echo $phperror; } ?></div></p> | |
| 57 | 64 | |
| 58 | 65 | </div> |
| 59 | 66 | </div> | ... | ... |
lib/dispatcher.inc.php
| ... | ... | @@ -537,38 +537,17 @@ class KTErrorDispatcher extends KTStandardDispatcher { |
| 537 | 537 | } |
| 538 | 538 | |
| 539 | 539 | function dispatch() { |
| 540 | - require_once(KT_LIB_DIR . '/validation/errorviewer.inc.php'); | |
| 541 | - require_once(KT_LIB_DIR . '/validation/customerrorviewer.inc.php'); | |
| 542 | - | |
| 543 | - $oCustomViewer =& KTCustomErrorViewer::initCustomErrorViewer(); | |
| 544 | - | |
| 545 | - //if the custom error messages are set to 'on' in the config file | |
| 546 | - //we check if the error page exists and redirect to it if it does. | |
| 547 | - //if either the page doesn't exit or the custom error option is off in the config file | |
| 548 | - //we carry out default error reporting | |
| 549 | - if ($oCustomViewer->getCustomErrorConfigSetting() == 'on'){ | |
| 550 | - $CustomErrorPage = $oCustomViewer->getCustomErrorRedirectPage(); | |
| 551 | - if ( $CustomErrorPage != '0') //if an error is not returned from getCustomErrorRedirectPage(); | |
| 552 | - { | |
| 553 | - $sErrorHandler = $oCustomViewer->getCustomErrorHandlerSetting(); | |
| 554 | - | |
| 555 | - //redirect | |
| 556 | - if ($sErrorHandler == 'on') | |
| 557 | - { | |
| 558 | - //if custom error handler is set to on inside config.ini then send error object with error page | |
| 559 | - $oCustomViewer->doCustomErrorPageRedirect($CustomErrorPage, $this->oError); | |
| 560 | - } | |
| 561 | - else if ($sErrorHandler != 'on') | |
| 562 | - { | |
| 563 | - //if custom error handler is set to off inside config.ini then just send error page | |
| 564 | - $oCustomViewer->doCustomErrorPageRedirect($CustomErrorPage); | |
| 565 | - } | |
| 566 | - | |
| 567 | - //exit without errors | |
| 568 | - exit(0); | |
| 569 | - } | |
| 540 | + | |
| 541 | + require_once(KT_LIB_DIR . '/validation/customerror.php'); | |
| 542 | + | |
| 543 | + $bCustomCheck = KTCustomErrorCheck::customErrorInit($this->oError); | |
| 544 | + | |
| 545 | + if($bCustomCheck) | |
| 546 | + { | |
| 547 | + exit(0); | |
| 570 | 548 | } |
| 571 | 549 | |
| 550 | + | |
| 572 | 551 | //if either customer error messages is off or the custom error page doesn't exist the function will run |
| 573 | 552 | //the default error handling here |
| 574 | 553 | $oRegistry =& KTErrorViewerRegistry::getSingleton(); | ... | ... |
lib/validation/customerror.php
0 โ 100644
| 1 | +<?php | |
| 2 | +/** | |
| 3 | + * $Id: $ | |
| 4 | + * | |
| 5 | + * KnowledgeTree Open Source Edition | |
| 6 | + * Document Management Made Simple | |
| 7 | + * Copyright (C) 2004 - 2008 The Jam Warehouse Software (Pty) Limited | |
| 8 | + * | |
| 9 | + * This program is free software; you can redistribute it and/or modify it under | |
| 10 | + * the terms of the GNU General Public License version 3 as published by the | |
| 11 | + * Free Software Foundation. | |
| 12 | + * | |
| 13 | + * This program is distributed in the hope that it will be useful, but WITHOUT | |
| 14 | + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | |
| 15 | + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more | |
| 16 | + * details. | |
| 17 | + * | |
| 18 | + * You should have received a copy of the GNU General Public License | |
| 19 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| 20 | + * | |
| 21 | + * You can contact The Jam Warehouse Software (Pty) Limited, Unit 1, Tramber Place, | |
| 22 | + * Blake Street, Observatory, 7925 South Africa. or email info@knowledgetree.com. | |
| 23 | + * | |
| 24 | + * The interactive user interfaces in modified source and object code versions | |
| 25 | + * of this program must display Appropriate Legal Notices, as required under | |
| 26 | + * Section 5 of the GNU General Public License version 3. | |
| 27 | + * | |
| 28 | + * In accordance with Section 7(b) of the GNU General Public License version 3, | |
| 29 | + * these Appropriate Legal Notices must retain the display of the "Powered by | |
| 30 | + * KnowledgeTree" logo and retain the original copyright notice. If the display of the | |
| 31 | + * logo is not reasonably feasible for technical reasons, the Appropriate Legal Notices | |
| 32 | + * must display the words "Powered by KnowledgeTree" and retain the original | |
| 33 | + * copyright notice. | |
| 34 | + * Contributor( s): ______________________________________ | |
| 35 | + */ | |
| 36 | + | |
| 37 | +require_once(KT_LIB_DIR . '/validation/errorviewer.inc.php'); | |
| 38 | +require_once(KT_LIB_DIR . '/validation/customerrorviewer.inc.php'); | |
| 39 | + | |
| 40 | +class KTCustomErrorCheck | |
| 41 | +{ | |
| 42 | + function customErrorInit($error) | |
| 43 | + { | |
| 44 | + $oCustomViewer =& KTCustomErrorViewer::initCustomErrorViewer(); | |
| 45 | + | |
| 46 | + //if the custom error messages are set to 'on' in the config file | |
| 47 | + //we check if the error page exists and redirect to it if it does. | |
| 48 | + //if either the page doesn't exit or the custom error option is off in the config file | |
| 49 | + //we carry out default error reporting | |
| 50 | + if ($oCustomViewer->getCustomErrorConfigSetting() == 'on') | |
| 51 | + { | |
| 52 | + | |
| 53 | + $CustomErrorPage = $oCustomViewer->getCustomErrorRedirectPage(); | |
| 54 | + if ( $CustomErrorPage != '0') //if an error is not returned from getCustomErrorRedirectPage(); | |
| 55 | + { | |
| 56 | + | |
| 57 | + $sErrorHandler = $oCustomViewer->getCustomErrorHandlerSetting(); | |
| 58 | + | |
| 59 | + | |
| 60 | + if ($sErrorHandler == 'on') | |
| 61 | + { | |
| 62 | + $oErrorHandler = KTCustomErrorHandler::initCustomErrorHandler(); | |
| 63 | + $oErrorHandler->logError($error); | |
| 64 | + } | |
| 65 | + | |
| 66 | + //redirect | |
| 67 | + $oCustomViewer->doCustomErrorPageRedirect($CustomErrorPage, $error); | |
| 68 | + | |
| 69 | + | |
| 70 | + //exit without errors | |
| 71 | + return true; | |
| 72 | + } | |
| 73 | + else | |
| 74 | + { | |
| 75 | + return false; | |
| 76 | + } | |
| 77 | + } | |
| 78 | + else | |
| 79 | + { | |
| 80 | + return false; | |
| 81 | + } | |
| 82 | + } | |
| 83 | +} | |
| 84 | +?> | |
| 0 | 85 | \ No newline at end of file | ... | ... |
lib/validation/customerrorhandler.php
| ... | ... | @@ -33,7 +33,7 @@ |
| 33 | 33 | * copyright notice. |
| 34 | 34 | * Contributor( s): ______________________________________ |
| 35 | 35 | */ |
| 36 | - require_once('config/dmsDefaults.php'); | |
| 36 | + //require_once(KT_DIR.'config/dmsDefaults.php'); | |
| 37 | 37 | require_once(KT_LIB_DIR.'/Log.inc'); |
| 38 | 38 | |
| 39 | 39 | class KTCustomErrorHandler | ... | ... |
lib/validation/customerrorviewer.inc.php
| ... | ... | @@ -72,7 +72,11 @@ |
| 72 | 72 | if (substr($sCustomErrorPage, 0, 4) != 'http') |
| 73 | 73 | { |
| 74 | 74 | |
| 75 | - $sCustomErrorPage = 'http://'.$_SERVER['HTTP_HOST'].'/'.$sCustomErrorPage; | |
| 75 | + $sUrl = KTInit::guessRootUrl(); | |
| 76 | + global $default; | |
| 77 | + $sRootUrl = ($default->sslEnabled ? 'https' : 'http') .'://'.$_SERVER['HTTP_HOST'].$sUrl; | |
| 78 | + $sCustomErrorPage = $sRootUrl.'/'.$sCustomErrorPage; | |
| 79 | + | |
| 76 | 80 | |
| 77 | 81 | } |
| 78 | 82 | |
| ... | ... | @@ -106,7 +110,6 @@ |
| 106 | 110 | // {{{ customErrorPageRedirect() |
| 107 | 111 | function doCustomErrorPageRedirect($CustomErrorPage, $oError = null) |
| 108 | 112 | { |
| 109 | - $sErrorMessage = ''; | |
| 110 | 113 | if($oError != null) |
| 111 | 114 | { |
| 112 | 115 | //call error handler |
| ... | ... | @@ -114,22 +117,19 @@ |
| 114 | 117 | $aErrorMessage = array (); |
| 115 | 118 | $aErrorMessage['Error_MessageOne'] = $oError->getMessage(); |
| 116 | 119 | $aErrorMessage['Error_MessageTwo'] = $oError->getUserInfo(); |
| 117 | - //echo '<pre>'; | |
| 118 | - //print_r($aErrorMessage); | |
| 119 | - //echo '</pre>'; | |
| 120 | - //exit; | |
| 121 | - $customErrorHandler = KTCustomErrorHandler::initCustomErrorHandler(); | |
| 122 | - $customErrorHandler->logError($oError); | |
| 120 | + | |
| 123 | 121 | } |
| 124 | - | |
| 122 | + | |
| 123 | + | |
| 125 | 124 | $ErrorPageCurlSession = curl_init($CustomErrorPage); |
| 126 | - //curl_setopt($ErrorPageCurlSession, CURLOPT_SSL_VERIFYPEER, false); | |
| 125 | + //curl_setopt($ErrorPageCurlSession, CURLOPT_SSL_VERIFYPEER, false); | |
| 127 | 126 | curl_setopt($ErrorPageCurlSession, CURLOPT_POST, true); |
| 128 | 127 | curl_setopt($ErrorPageCurlSession, CURLOPT_POSTFIELDS, $aErrorMessage); |
| 129 | 128 | $ErrorPageSent = curl_exec($ErrorPageCurlSession); |
| 130 | - curl_close($ErrorPageCurlSession); | |
| 131 | - | |
| 129 | + curl_close($ErrorPageCurlSession); | |
| 130 | + | |
| 132 | 131 | } |
| 133 | 132 | // }}} |
| 133 | + | |
| 134 | 134 | } |
| 135 | 135 | ?> | ... | ... |