我无意中将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)。
任何提示如何从意外覆盖的系统模块中恢复?
答案 0 :(得分:0)
我终于找到了答案(感谢Max),并希望在其他人遇到同样问题时分享它。
如果您不小心将drupal更新安装到像/sites/all/modules
这样的子目录中,此解决方案应该可以正常工作。
运行update.php后,系统db表会更新到新路径,因此/modules
中不的所有模块都优先于/modules
中的模块。您可以卸载所有可选模块,以便从系统表中清除它们也没有问题。
对于system
模块,这不是简单的可能,因为当安装了错误的模块时,您无法 deinstall system
模块。
所以你需要做的是:
system
表,例如phpMyAdmin,并搜索系统模块:SELECT * FROM system WHERE name = "system"
。filename
字段从“sites / all / modules / modules / system / system.module”(或其他任何内容)更改为“modules / system / system.module”现在Drupal应该找到原始(内置)系统模块 - 一切都应该没问题。