Drupal Registry Rebuild

最近开发一个项目,在移动过一些模块的路径之后,出现了类似于这样的错误:

PHP Fatal error:  Class 'EntityAPIControllerExportable' not found in ...sites/all/modules/rules/includes/rules.core.inc on line 11

查过资料之后知道,一些比较核心的模块会到registry表内注册自己一些核心的class/function,此时需要重建它,才能让系统找到迁移之后的模块。
重建registry表,我们得使用Registry Rebuild模块。根据官网的介绍:”THIS IS NOT A MODULE. YOU CAN’T ENABLE IT.” 这不是一个真正的模块,不能启用它。说明这个”模块”的使用方式会跟普通的模块不一样,下面开始操作。重建数据之前务必备份数据库!!

官方有提供三种重建registry表的方法:
http://drupal.org/project/registry_rebuild

1. 使用drush:

drush dl registry_rebuild   //下载registry_rebuild到.drush目录
cd sites/mymultisite   //进入需要重建的站点目录
drush rr   //重建

2. 使用php命令:

下载registry_rebuild到all/modules目录
cd sites/all/modules/registry_rebuild   //进入registry_rebuild的目录
php registry_rebuild.php   //使用php命令执行重建动作

3. 外部访问:(这种方法最简单,推荐)

下载registry_rebuild到all/modules目录
打开浏览器直接访问 http://example.com/sites/all/modules/registry_rebuild/registry_rebuild.php

以上方法执行完毕后,会显示类似于下面的信息:

DRUPAL_ROOT is /home/leon/workspace/commerce.
There were 631 files in the registry before and 508 files now.
If you don't see any crazy fatal errors, your registry has been rebuilt. You will probably want to flush your caches now.

没有出现任何错误信息的话,就大功告成了,最后再清理一下整站缓存即可。