如何在drupal 6中卸载被覆盖的系统模块

时间:2013-02-13 19:55:25

标签: drupal drupal-6

我无意中将drupal更新(6.26)安装到sites / all / modules ,我把整个drupal根目录放在那里,所以我有{{1 },sites/all/modules/modules等。)

然后,在不知不觉中运行了update.php,一切顺利,因为Drupal智能地将sites/all/modules/sites/all/modules中的新核心模块注册为核心模块。

在下次更新之前,此工作正常。我将核心drupal文件放入根目录,并且核心被6.27正确替换。但在sites/all/modules/modules/*中,上次更新的6.26文件和drupal接受sites/all/modules覆盖核心sites/all/modules文件的OLDER文件。

所以drupal现在抱怨它仍然是6.26,即使真正的核心是6.27 - 那些文件从未被实际调用过,因为被/modules覆盖了。

所以: 我设法从那里删除所有不需要的模块,并且有一些错误,我让它再次工作。最好的方法是: 更改/sites/all/modules/modules/*文件并将版本号从6.27调整为较旧版本,如6.25。 THEN 运行update.php - 因此Drupal认识到站点/所有/模块中的OLDER版本比核心版本更高。现在删除该目录并再次运行update.php。现在这个模块的一切都很干净。

但这对系统模块不起作用。每次我尝试删除sites/all/modules/modules/<module>/<module>.info目录时,update.php URL都不再可调用(HTTP错误500)。

任何提示如何从意外覆盖的系统模块中恢复?

1 个答案:

答案 0 :(得分:0)

我终于找到了答案(感谢Max),并希望在其他人遇到同样问题时分享它。

如果您不小心将drupal更新安装到像/sites/all/modules这样的子目录中,此解决方案应该可以正常工作。 运行update.php后,系统db表会更新到新路径,因此/modules的所有模块都优先于/modules中的模块。您可以卸载所有可选模块,以便从系统表中清除它们也没有问题。

对于system模块,这不是简单的可能,因为当安装了错误的模块时,您无法 deinstall system模块。

所以你需要做的是:

  1. 打开system表,例如phpMyAdmin,并搜索系统模块:SELECT * FROM system WHERE name = "system"
  2. filename字段从“sites / all / modules / modules / system / system.module”(或其他任何内容)更改为“modules / system / system.module”
  3. 现在(重要 之前运行 update.php !)删除错误的系统模块文件夹。
  4. 运行 update.php
  5. 现在Drupal应该找到原始(内置)系统模块 - 一切都应该没问题。