mirror of
https://github.com/moodle/moodle.git
synced 2025-08-06 09:26:35 +02:00
MDL-20693 new NO_DEBUG_DISPLAY define
This commit is contained in:
parent
3c1ea58b46
commit
2e9b772fb8
16 changed files with 87 additions and 88 deletions
|
@ -161,6 +161,14 @@ global $FULLSCRIPT;
|
|||
*/
|
||||
global $SCRIPT;
|
||||
|
||||
// Scripts may request no debug and error messages in output
|
||||
// please note it must be defined before including the config.php script
|
||||
// and in some cases you also need to set custom default exception handler
|
||||
if (!defined('NO_DEBUG_DISPLAY')) {
|
||||
define('NO_DEBUG_DISPLAY', false);
|
||||
}
|
||||
|
||||
/// wwwroot is mandatory
|
||||
if (!isset($CFG->wwwroot)) {
|
||||
trigger_error('Fatal: $CFG->wwwroot is not configured! Exiting.');
|
||||
die;
|
||||
|
@ -354,27 +362,26 @@ global $SCRIPT;
|
|||
unset($originaldatabasedebug);
|
||||
error_reporting($CFG->debug);
|
||||
|
||||
/// find out if PHP cofigured to display warnings
|
||||
// find out if PHP cofigured to display warnings,
|
||||
// this is a security problem because some moodle scripts may
|
||||
// disclose sensitive information
|
||||
if (ini_get_bool('display_errors')) {
|
||||
define('WARN_DISPLAY_ERRORS_ENABLED', true);
|
||||
}
|
||||
/// If we want to display Moodle errors, then try and set PHP errors to match
|
||||
// If we want to display Moodle errors, then try and set PHP errors to match
|
||||
if (!isset($CFG->debugdisplay)) {
|
||||
//keep it as is during installation
|
||||
// keep it "as is" during installation
|
||||
} else if (NO_DEBUG_DISPLAY) {
|
||||
// some parts of Moodle cannot display errors and debug at all.
|
||||
@ini_set('display_errors', '0');
|
||||
@ini_set('log_errors', '1');
|
||||
} else if (empty($CFG->debugdisplay)) {
|
||||
@ini_set('display_errors', '0');
|
||||
@ini_set('log_errors', '1');
|
||||
} else {
|
||||
// This is very problematic in XHTML strict mode!
|
||||
@ini_set('display_errors', '1');
|
||||
}
|
||||
// Even when users want to see errors in the output,
|
||||
// some parts of Moodle cannot display them at all.
|
||||
// (Once we are XHTML strict compliant, debugdisplay
|
||||
// _must_ go away).
|
||||
if (defined('MOODLE_SANE_OUTPUT')) {
|
||||
@ini_set('display_errors', '0');
|
||||
@ini_set('log_errors', '1');
|
||||
}
|
||||
|
||||
/// detect unsupported upgrade jump as soon as possible - do not change anything, do not use system functions
|
||||
if (!empty($CFG->version) and $CFG->version < 2007101509) {
|
||||
|
@ -685,6 +692,6 @@ global $SCRIPT;
|
|||
|
||||
}
|
||||
|
||||
/// note: we can not block non utf-8 installatrions here, because empty mysql database
|
||||
/// note: we can not block non utf-8 installations here, because empty mysql database
|
||||
/// might be converted to utf-8 in admin/index.php during installation
|
||||
|
||||
|
|
|
@ -187,7 +187,7 @@ function default_exception_handler($ex) {
|
|||
$info = get_exception_info($ex);
|
||||
|
||||
if (debugging('', DEBUG_MINIMAL)) {
|
||||
$logerrmsg = "Default exception handler: ".$info->message.' Debug: '.$info->debuginfo."\n".format_backtrace($info->backtrace);
|
||||
$logerrmsg = "Default exception handler: ".$info->message.' Debug: '.$info->debuginfo."\n".format_backtrace($info->backtrace, true);
|
||||
error_log($logerrmsg, 0);
|
||||
}
|
||||
|
||||
|
@ -198,7 +198,7 @@ function default_exception_handler($ex) {
|
|||
echo $OUTPUT->fatal_error($info->message, $info->moreinfourl, $info->link, $info->backtrace, $info->debuginfo);
|
||||
} catch (Exception $out_ex) {
|
||||
// default exception handler MUST not throw any exceptions!!
|
||||
// the problem here is we do not know if page already started or not, we only know that somebody messed up in outputlib or theme
|
||||
// the problem here is we do not know if page already started or not, we only know that somebody messed up in outputlib or theme
|
||||
// so we just print at least something instead of "Exception thrown without a stack frame in Unknown on line 0":-(
|
||||
echo bootstrap_renderer::early_error_content($info->message, $info->moreinfourl, $info->link, $info->backtrace, $info->debuginfo);
|
||||
$outinfo = get_exception_info($out_ex);
|
||||
|
|
|
@ -3140,8 +3140,8 @@ function get_docs_url($path) {
|
|||
* trigger_error() or error_log(). Using echo or print will break XHTML
|
||||
* JS and HTTP headers.
|
||||
*
|
||||
* It is also possible to define NO_DEBUG_DISPLAY which redirects the message to error_log.
|
||||
*
|
||||
* @global object
|
||||
* @uses DEBUG_NORMAL
|
||||
* @param string $message a message to print
|
||||
* @param int $level the level at which this debugging statement should show
|
||||
|
@ -3164,16 +3164,25 @@ function debugging($message = '', $level = DEBUG_NORMAL, $backtrace = null) {
|
|||
$backtrace = debug_backtrace();
|
||||
}
|
||||
$from = format_backtrace($backtrace, CLI_SCRIPT);
|
||||
if ($CFG->debugdisplay || isset($UNITTEST->running)) {
|
||||
// When the unit tests are running, any call to trigger_error
|
||||
// is intercepted by the test framework and reported as an exception.
|
||||
// Therefore, we cannot use trigger_error during unit tests.
|
||||
// At the same time I do not think we should just discard those messages,
|
||||
// so displaying them on-screen seems like the only option. (MDL-20398)
|
||||
if (!empty($UNITTEST->running)) {
|
||||
// When the unit tests are running, any call to trigger_error
|
||||
// is intercepted by the test framework and reported as an exception.
|
||||
// Therefore, we cannot use trigger_error during unit tests.
|
||||
// At the same time I do not think we should just discard those messages,
|
||||
// so displaying them on-screen seems like the only option. (MDL-20398)
|
||||
echo '<div class="notifytiny">' . $message . $from . '</div>';
|
||||
|
||||
} else if (NO_DEBUG_DISPLAY) {
|
||||
// script does not want any errors or debugging in output,
|
||||
// we send the info to error log instead
|
||||
error_log('Debugging: ' . $message . $from);
|
||||
|
||||
} else if ($CFG->debugdisplay) {
|
||||
if (!defined('DEBUGGING_PRINTED')) {
|
||||
define('DEBUGGING_PRINTED', 1); // indicates we have printed something
|
||||
}
|
||||
echo '<div class="notifytiny">' . $message . $from . '</div>';
|
||||
|
||||
} else {
|
||||
trigger_error($message . $from, E_USER_NOTICE);
|
||||
}
|
||||
|
@ -3181,17 +3190,6 @@ function debugging($message = '', $level = DEBUG_NORMAL, $backtrace = null) {
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable debug messages from debugging(), while keeping PHP error reporting level as is.
|
||||
*
|
||||
* @global object
|
||||
*/
|
||||
function disable_debugging() {
|
||||
global $CFG;
|
||||
$CFG->debug = $CFG->debug | 0x80000000; // switch the sign bit in integer number ;-)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns string to add a frame attribute, if required
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue