diff --git a/admin/blocks.php b/admin/blocks.php
index 77febe60ed7..dcf00f6001e 100644
--- a/admin/blocks.php
+++ b/admin/blocks.php
@@ -154,7 +154,10 @@
$settings = '' . get_string('settings') . '';
} else if ($blocksettings instanceof admin_settingpage) {
$settings = ''.$strsettings.'';
- } else {
+ } else if (!file_exists($CFG->dirroot.'/blocks/'.$block->name.'/settings.php')) {
+ // If the block's settings node was not found, we check that the block really provides the settings.php file.
+ // Note that blocks can inject their settings to other nodes in the admin tree without using the default locations.
+ // This can be done by assigning null to $setting in settings.php and it is a valid case.
debugging('Warning: block_'.$block->name.' returns true in has_config() but does not provide a settings.php file',
DEBUG_DEVELOPER);
}