You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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()抛出异常。

修复步骤

  • 临时禁用问题模块:

    1. 若能访问后台,进入“模块管理”页面,找到并禁用wingsuit_ui_patterns模块;
    2. 若无法访问后台,可使用Drush命令(已安装Drush的情况下):
      drush pm:uninstall wingsuit_ui_patterns -y
      
    3. 无Drush则手动删除modules/contrib/wingsuit_ui_patterns目录,再访问/core/rebuild.php重建缓存。
  • 排查模块配置与依赖:
    若需要保留该模块,检查其配置页面是否有指定错误的目录路径,同时确认模块依赖的主题或自定义目录是否存在且权限正确。

  • 验证版本兼容性:
    确认wingsuit_ui_patterns、ui_patterns与Gutenberg模块的版本是否匹配,版本不兼容可能导致路径解析错误。

  • 最终清理缓存:
    完成上述操作后,访问/core/rebuild.php完成缓存重建。

内容的提问来源于stack exchange,提问作者Mitsue Elisa Guerrero Monsalve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 15:24:06