Drupal新手求助:安装模块后出现NotRegularDirectoryException错误
Drupal 目录不存在错误修复方案
问题背景
作为Drupal纯新手,安装多个模块(推测为Gutenberg)后网站提示“网站遇到意外错误,请稍后重试”。已在sites/default/settings.php中添加以下配置开启详细日志并允许缓存重建:
# 开启详细错误日志 $config['system.logging']['error_level'] = 'verbose'; # 允许缓存重建 $settings['rebuild_access'] = TRUE;
错误详情
开启日志后显示核心错误:
Drupal\Core\File\Exception\NotRegularDirectoryException: is not a directory. in Drupal\Core\File\FileSystem->scanDirectory() (line 665 of core/lib/Drupal/Core/File/FileSystem.php).
对应core/lib/Drupal/Core/File/FileSystem.php第664-666行代码:
if (!is_dir($dir)) { throw new NotRegularDirectoryException("$dir is not a directory."); }
完整错误调用栈:
Drupal\ui_patterns\Plugin\Deriver\AbstractYamlPatternsDeriver->fileScanDirectory() (Line: 188) Drupal\wingsuit_ui_patterns\Plugin\Deriver\LibraryDeriver->getPatterns() (Line: 61) Drupal\ui_patterns\Plugin\Deriver\AbstractPatternsDeriver->getDerivativeDefinitions(Array) (Line: 101) Drupal\Component\Plugin\Discovery\DerivativeDiscoveryDecorator->getDerivatives(Array) (Line: 87) Drupal\Component\Plugin\Discovery\DerivativeDiscoveryDecorator->getDefinitions() (Line: 285) Drupal\Core\Plugin\DefaultPluginManager->findDefinitions() (Line: 72) Drupal\ui_patterns\UiPatternsManager->getDefinitions() (Line: 52) Drupal\ui_patterns\UiPatterns::getPatternDefinitions() (Line: 23) ui_patterns_layouts_layout_alter(Array, NULL, NULL) (Line: 539) Drupal\Core\Extension\ModuleHandler->alter('layout', Array) (Line: 334) Drupal\Core\Plugin\DefaultPluginManager->alterDefinitions(Array) (Line: 289) Drupal\Core\Plugin\DefaultPluginManager->findDefinitions() (Line: 175) Drupal\Core\Plugin\DefaultPluginManager->getDefinitions() (Line: 168) Drupal\Core\Layout\LayoutPluginManager->getThemeImplementations() (Line: 28) layout_discovery_theme(Array, 'module', 'layout_discovery', 'core/modules/layout_discovery') (Line: 469) Drupal\Core\Theme\Registry->processExtension(Array, 'layout_discovery', 'module', 'layout_discovery', 'core/modules/layout_discovery') (Line: 356) Drupal\Core\Theme\Registry->build() (Line: 255) Drupal\Core\Theme\Registry->get() (Line: 88) Drupal\Core\Utility\ThemeRegistry->initializeRegistry() (Line: 69) Drupal\Core\Utility\ThemeRegistry->__construct('theme_registry:runtime:dxpr_theme', Object, Object, Array, 1) (Line: 275) Drupal\Core\Theme\Registry->getRuntime() (Line: 194) Drupal\Core\Entity\EntityViewBuilder->getBuildDefaults(Object, 'full') (Line: 61) Drupal\node\NodeViewBuilder->getBuildDefaults(Object, 'full') (Line: 157) Drupal\Core\Entity\EntityViewBuilder->viewMultiple(Array, 'full', NULL) (Line: 123) Drupal\Core\Entity\EntityViewBuilder->view(Object, 'full', NULL) (Line: 41) Drupal\webprofiler\Entity\EntityViewBuilderDecorator->view(Object, 'full') (Line: 102) Drupal\Core\Entity\Controller\EntityViewController->view(Object, 'full') (Line: 66) Drupal\node\Controller\NodeViewController->view(Object, 'full', NULL) call_user_func_array(Array, Array) (Line: 123) Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() (Line: 564) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 124) Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array) (Line: 97) Drupal\Core\EventSubscriber\EarlyRenderingControllerWrapperSubscriber->Drupal\Core\EventSubscriber\{closure}() (Line: 158) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 80) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 106) Drupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1) (Line: 85) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 38) Drupal\webprofiler\StackMiddleware\WebprofilerMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23) Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 708) Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
问题分析
从调用栈可以明确,错误由wingsuit_ui_patterns模块触发:该模块的LibraryDeriver->getPatterns()方法在调用目录扫描时,传入了无效(甚至为空)的目录路径,导致FileSystem->scanDirectory()抛出异常。
修复步骤
临时禁用问题模块:
- 若能访问后台,进入“模块管理”页面,找到并禁用
wingsuit_ui_patterns模块; - 若无法访问后台,可使用Drush命令(已安装Drush的情况下):
drush pm:uninstall wingsuit_ui_patterns -y - 无Drush则手动删除
modules/contrib/wingsuit_ui_patterns目录,再访问/core/rebuild.php重建缓存。
- 若能访问后台,进入“模块管理”页面,找到并禁用
排查模块配置与依赖:
若需要保留该模块,检查其配置页面是否有指定错误的目录路径,同时确认模块依赖的主题或自定义目录是否存在且权限正确。验证版本兼容性:
确认wingsuit_ui_patterns、ui_patterns与Gutenberg模块的版本是否匹配,版本不兼容可能导致路径解析错误。最终清理缓存:
完成上述操作后,访问/core/rebuild.php完成缓存重建。
内容的提问来源于stack exchange,提问作者Mitsue Elisa Guerrero Monsalve
相关产品推荐
相关产品推荐

