Я восстановил резервную копию с производства локально и попытался просто переместить вещи и нажать admin / modules или запустить registry_rebuild (), но это не остановило появление фатальных ошибок. Это имеет смысл для меня, так как некоторые модули могут использовать include или что-либо в их hook_init (), или у вас может быть установлен путь к маршрутизатору меню, который зависит от модуля, или include, который Drupal не может найти при начальной загрузке. В конечном счете, это то, что я сделал (ваши пути могут отличаться):
Шаг 1: Заменить сайты / все / модули на сайты / все / модули / contrib
UPDATE system SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/contrib');
UPDATE registry SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/contrib');
UPDATE registry_file SET filename = REPLACE(filename, 'sites/all/modules', 'sites/all/modules/contrib');
Шаг 2: Замените сайты / все / модули / вклада сайтами / всеми / модулями / на заказ для пользовательских модулей с пространством имен
UPDATE system SET filename = REPLACE(filename, 'sites/all/modules/contrib', 'sites/all/modules/custom') WHERE name LIKE 'my_custom_namespace_%';
UPDATE registry SET filename = REPLACE(filename, 'sites/all/modules/contrib', 'sites/all/modules/custom') WHERE name LIKE 'my_custom_namespace_%';
UPDATE registry_file SET filename = REPLACE(filename, 'sites/all/modules/contrib', 'sites/all/modules/custom') WHERE filename LIKE '%my_custom_namespace_%';
Шаг 3: Переместите модули разработчика в сайты / все / модули / dev
UPDATE system SET filename = REPLACE(filename, 'sites/all/modules/contrib', 'sites/all/modules/dev') WHERE name LIKE 'devel%';
UPDATE registry SET filename = REPLACE(filename, 'sites/all/modules/contrib', 'sites/all/modules/dev') WHERE name LIKE 'devel%';
UPDATE registry_file SET filename = REPLACE(filename, 'sites/all/modules/contrib', 'sites/all/modules/dev') WHERE filename LIKE '%devel%';
Шаг 4: Очистите кеш, чтобы все правильно загрузилось
TRUNCATE TABLE cache
TRUNCATE TABLE cache_bootstrap
TRUNCATE TABLE cache_menu
TRUNCATE TABLE cache_page
TRUNCATE TABLE cache_path
Примечание. Если вы используете пользовательский модуль или ресурс, например LoginToboggan, для обработки 403 (доступ запрещен) и вы вышли из системы во время этого процесса, вам может потребоваться обновить include_file
столбец в menu_roter
таблице, чтобы использовать новый путь для включаемого файла. , Это, вероятно, редкое явление.
UPDATE menu_router SET include_file = 'sites/all/modules/custom/my_custom_namespace/includes/foo.inc' WHERE path = 'access-denied'
Как только эти запросы будут выполнены - что займет всего лишь доли секунды - включите admin / config / development / performance и очистите кэш, чтобы перестроить пути меню.
registry_file
обрезать свою таблицу, что заставит drupal повторно сканировать все файлы и перестроить таблицу.