1

我的一位开发人员想要覆盖核心用户模块的某些功能。他制作了核心用户模块的副本,并将其放置在 sites/all/modules 文件夹中。功能中的某些东西搞砸了,现在我不知道如何卸载它。我曾尝试从 sites/all/modules 文件夹中删除该模块,但它现在使站点崩溃。然后我编辑系统表以确保所有条目都指向原始用户模块,但现在我遇到了用户模块问题和奇怪的异常。覆盖核心模块是一种不好的做法吗?还有其他需要清理的桌子吗?什么是删除无法通过管理控制面板删除的模块的可靠方法,因为在这种情况下,被覆盖的用户模块永远不会出现在模块列表中。

4

1 回答 1

3

覆盖核心模块是一种不好的做法吗?

是的。不要覆盖核心模块:坏事(比如你现在所拥有的)发生了。

还有其他需要清理的桌子吗?

如果不知道您的用户模块版本中的代码,这是不可能知道的,但即使知道它已经造成了损害。

什么是删除无法通过管理控制面板删除的模块的可靠方法,因为在这种情况下,被覆盖的用户模块永远不会出现在模块列表中。

通常,如果您出于某种原因无法访问模块管理页面,您将运行以下命令来卸载模块:

module_load_install($module);
$versions = drupal_get_schema_versions($module);
drupal_set_installed_schema_version($module, SCHEMA_UNINSTALLED);
module_invoke($module, 'uninstall');

然后删除覆盖模块的文件并重新安装原始模块。您必须在运行卸载挂钩删除这些文件,因为这些文件包含卸载期间需要执行的代码。

但是,由于您已经覆盖了用户模块,所以您处于一个非常糟糕的位置,因为您无法卸载用户模块:所需的核心模块并不意味着被篡改。

因此,摆脱当前困境的可靠方法是删除覆盖模块并从以前的数据库备份中恢复。

于 2010-08-29T05:20:02.633 回答