MDL-50788 classloader: Prevent cryptic errors on unreadable classes dir
authorDan Poltawski <dan@moodle.com>
Fri, 9 Oct 2015 09:31:17 +0000 (10:31 +0100)
committerDan Poltawski <dan@moodle.com>
Fri, 9 Oct 2015 09:36:59 +0000 (10:36 +0100)
Do not attempt to read an unreadable directory because previously the generated
errors were hard to fathom.

Thanks to James McQuillan for the basis of the patch.

lib/classes/component.php

index 95f9044..bde0ae0 100644 (file)
@@ -651,6 +651,13 @@ $cache = '.var_export($cache, true).';
             return;
         }
 
+        if (!is_readable($fulldir)) {
+            // TODO: MDL-51711 We should generate some diagnostic debugging information in this case
+            // because its pretty likely to lead to a missing class error further down the line.
+            // But our early setup code can't handle errors this early at the moment.
+            return;
+        }
+
         $items = new \DirectoryIterator($fulldir);
         foreach ($items as $item) {
             if ($item->isDot()) {