在为我的网站使用Drupal几个月后,我发现模块列表中的模块卸载选项卡。我应该使用模块卸载菜单吗?
我一直通过从文件系统中删除文件夹(禁用它们之后)来卸载我的模块。我想知道这是否是删除它们的错误方法。
谢谢
在为我的网站使用Drupal几个月后,我发现模块列表中的模块卸载选项卡。我应该使用模块卸载菜单吗?
我一直通过从文件系统中删除文件夹(禁用它们之后)来卸载我的模块。我想知道这是否是删除它们的错误方法。
谢谢
当您卸载模块,而并非只是禁止和删除,你让模块清理后本身,包括:
因此,卸载是一个很好的清洁,为您的数据库的健康。事情不会这么做,但为什么要将未使用的表保存在数据库中?
注:
它是由模块生成器创建做清理所需的代码,所以不是所有的模块做到这一点非常好。
卸载选项卡将删除与模块相关的数据库中的任何内容。该操作要求该模块仍然存在于您的模块目录中。
简单地删除这些文件并不是错误的,但它会在数据库中留下不需要的东西。卸载选项卡不会为你删除模块文件,你需要自己去做,就像你一直在做的那样。
您可以检查this link - 模块可能有一些额外的卸载说明对于他们,但是看起来他们大部分没有 - 这就是为什么你没有任何问题:)
有时需要卸载,因为如果一个模块被禁用,hook_install()将不会触发。因此,如果例如某个模块有一些损坏的数据,禁用并重新启用将不会删除该数据。
你可能会在你的方法确定。然而,有一件事需要做的是做以下事情。
原因是hook_install()和hook_uninstall()应该是彼此的镜像。更新挂钩用于保持模块架构和设置与hook_install()中提供的最新内容一致,如果您要使用更新的模块进行卸载(不更新),它将试图卸载不同的设置预期。风险很小,有些事情会发生严重错误,但值得注意。
我一直通过从文件系统中删除文件夹(禁用它们之后)来卸载我的模块。我想知道这是否是删除它们的错误方法。
从模块中使用的文件不是模块在Drupal站点上留下的唯一东西;在卸载模块时,还有数据库表,Drupal变量,仍然需要删除的缓存值。模块还可以将行添加到从不同模块创建的数据库表中。
删除模块文件时,不会删除对表系统中包含的模块的任何引用。这意味着,如果在删除它之后复制同一模块,并且删除了它的表,则该模块不会重新创建所需的数据库表。
我会明确地说这是卸载模块的错误方法。
Drush使得模块卸载过程更愉快,喜欢的东西:
drush pm-disable [module] // or its shorthand drush dis [module]
drush pm-uninstall [module]
事实上,Drush使刚才的一切更愉快(下载/安装模块,处理安装配置文件,创建数据库备份,和我个人最喜欢的,更新你的整个代码库)。如果你还没有使用它,我强烈建议尝试一下。