如何解决“文件系统缺少以下模块”错误?


9

我在Drupal 8网站中遇到以下错误。

文件系统缺少以下模块

看起来好像已安装并删除了自定义模块而没有将其卸载。

如何解决此错误?


您正在站点中使用配置管理吗?
阿德里安·西德·阿尔玛格

是的,我正在使用
Kevin

问题有一些进展吗?我想最后知道您如何解决问题,这在任何项目中都可以到达我。
阿德里安·西德·阿尔玛格

在Drupal 8.7.3中,我收到“文件系统中缺少以下模块:drupal_get_filename()中的php”,但是当我尝试安装php模块时,我得到了关于它已经存在于核心中的错误。该错误使我无法卸载任何东西。昨天我升级到8.7.3,今天升级到8.5.3,无法摆脱该错误。每次都会清除缓存,并且我了解的所有模块都已还原。我看到有关Drush的说明,但如何在8.7.3上安装它?
WilliamK

Answers:


11

如果您具有Drupal Console,则解决此问题的快速方法是生成具有相同计算机名的模块,然后将其卸载。

$ drupal generate:module

然后在适当的提示下键入计算机名称,并接受其他所有设置的默认值。

$ drush pm-uninstall

然后,您可以从文件系统中删除新生成的模块,然后继续一天的工作。

(注意,您可能需要保留生成的模块,否则将返回错误。在这种情况下,如果您需要安装同名的contrib模块,请在添加contrib模块后删除生成的模块。然后清除缓存。 )


2
在上面的SQL查询不起作用之后,这是最简单的选项。
克里斯·查尔顿

它有助于解决找不到模块的错误。
Akshay Sawant,

如果有人需要安装Drupal Console的帮助,我发现此页面很有帮助。请记住,您将要全局安装Drupal Console Launcher,并在本地安装Drupal Console(在Drupal安装的项目根目录中)。
世界末日

10

假设您删除了一个不重要的自定义模块,该模块不需要触发任何卸载例程,则可以使用以下Drush命令。

  • Drupal 7

    drush sql-query "DELETE from system where type = 'module' AND name = 'MYMODULE';"
  • Drupal 8

    drush sql-query "DELETE FROM key_value WHERE collection='system.schema' AND name='MYMODULE';"

有关更多信息和替代方法,请参阅如何修复“文件系统中缺少以下模块...”警告消息


1
我试了几次,这对于D8至少在d8.7上不起作用。我会建议下面的解决方案,先生成虚拟模块,然后再进行uinstall。
Marko Blazekovic

3

现在,使用配置管理模块,模块配置存储在core.extension.yml文件中。

转到编辑文件,尝试从文件系统中找到丢失的模块,然后删除该行并导入配置(drush cim)。

如果这不起作用,但是您找到了模块,则再次创建模块(只是文件夹和有效的.info.yml文件),然后再次运行drush cim命令。这将卸载模块。


4
这可行,但是正确的方法是还原模块并卸载它。如果该模块提供了架构,配置等,它将保留在系统中,否则您将必须手动进行清理。
Berdir

1
@Berdir如果找不到自定义模块,我们可以做另一件事吗?
Adrian Cid Almaguer

并非如此,那么您需要按照上述建议使用drush cedit或core.extension文件中的导入/导出手动进行操作。
Berdir

0

我修复它的方法是使用rush和composer。使用require获取模块,使用drush安装和卸载,然后使用composer删除。

composer require drupal/missing_module
drush en missing_module
drush pmu missing_module
composer remove drupal/missing_module

drush en可能不是必需的步骤

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.