diff --git a/admin/settings/development.php b/admin/settings/development.php
index 4d9cd84ab5200a74ff687ca902d43a3d66deccd4..d7326fc72ae950c26c1276ec2c35c329846bdf50 100644
--- a/admin/settings/development.php
+++ b/admin/settings/development.php
@@ -24,7 +24,7 @@ if ($hassiteconfig) { // speedup for non-admins, add all caps used on this page
// "debugging" settingpage
$temp = new admin_settingpage('debugging', new lang_string('debugging', 'admin'));
$temp->add(new admin_setting_special_debug());
- $temp->add(new admin_setting_configcheckbox('debugdisplay', new lang_string('debugdisplay', 'admin'), new lang_string('configdebugdisplay', 'admin'), ini_get_bool('display_errors')));
+ $temp->add(new admin_setting_configcheckbox('debugdisplay', new lang_string('debugdisplay', 'admin'), new lang_string('configdebugdisplay', 'admin'), (defined('WARN_DISPLAY_ERRORS_ENABLED') or !empty($CFG->debug))));
$temp->add(new admin_setting_configcheckbox('debugsmtp', new lang_string('debugsmtp', 'admin'), new lang_string('configdebugsmtp', 'admin'), 0));
$temp->add(new admin_setting_configcheckbox('perfdebug', new lang_string('perfdebug', 'admin'), new lang_string('configperfdebug', 'admin'), '7', '15', '7'));
$temp->add(new admin_setting_configcheckbox('debugstringids', new lang_string('debugstringids', 'admin'), new lang_string('debugstringids_desc', 'admin'), 0));
diff --git a/lib/outputrenderers.php b/lib/outputrenderers.php
index 17cd590268a0eeceae7e007640bcb81593f6249a..58e7af1a3dc581d1a6fdffa2c5ed7ff5a56e31a7 100644
--- a/lib/outputrenderers.php
+++ b/lib/outputrenderers.php
@@ -2197,7 +2197,7 @@ EOD;
}
$output .= $this->box($message, 'errorbox');
- if (debugging('', DEBUG_DEVELOPER)) {
+ if (debugging('', DEBUG_DEVELOPER) and !empty($CFG->debugdisplay)) {
if (!empty($debuginfo)) {
$debuginfo = s($debuginfo); // removes all nasty JS
$debuginfo = str_replace("\n", '
', $debuginfo); // keep newlines
diff --git a/lib/setup.php b/lib/setup.php
index 6f73e0f756dee4249c7a11a5db89712387c98a84..9520f946fda2b7e54c2fc54a3d9674da0b7a711a 100644
--- a/lib/setup.php
+++ b/lib/setup.php
@@ -563,7 +563,8 @@ if (ini_get_bool('display_errors')) {
}
// 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.
+ $CFG->debugdisplay = (int)ini_get_bool('display_errors');
} else if (NO_DEBUG_DISPLAY) {
// some parts of Moodle cannot display errors and debug at all.
ini_set('display_errors', '0');
diff --git a/lib/setuplib.php b/lib/setuplib.php
index 51f8d827f42b98855d49dd08f505899d1b6c4345..dc0981cfbde1bca2ad4d506e3f9220172bfd2aed 100644
--- a/lib/setuplib.php
+++ b/lib/setuplib.php
@@ -1473,7 +1473,7 @@ border-color:black; background-color:#ffffee; border-style:solid; border-radius:
width: 80%; -moz-border-radius: 20px; padding: 15px">
' . $message . '
';
- if (!empty($CFG->debug) && $CFG->debug >= DEBUG_DEVELOPER) {
+ if (!empty($CFG->debugdisplay) && !empty($CFG->debug) && $CFG->debug >= DEBUG_DEVELOPER) {
if (!empty($debuginfo)) {
$debuginfo = s($debuginfo); // removes all nasty JS
$debuginfo = str_replace("\n", '
', $debuginfo); // keep newlines
diff --git a/lib/weblib.php b/lib/weblib.php
index 8384f373871636159635af8a89fc18c5e66bf73f..3921968ddffa3fabffcc6ddd5345c564991bf25a 100644
--- a/lib/weblib.php
+++ b/lib/weblib.php
@@ -2826,10 +2826,6 @@ function debugging($message = '', $level = DEBUG_NORMAL, $backtrace = null) {
return false;
}
- if (!isset($CFG->debugdisplay)) {
- $CFG->debugdisplay = ini_get_bool('display_errors');
- }
-
if ($message) {
if (!$backtrace) {
$backtrace = debug_backtrace();