Ich habe ein Backup lokal aus der Produktion wiederhergestellt und versucht, nur Dinge zu verschieben und admin / modules zu drücken oder registry_rebuild () auszuführen, aber es hat nicht verhindert, dass schwerwiegende Fehler ausgelöst wurden. Dies ist für mich sinnvoll, da einige Module möglicherweise Includes oder was auch immer in ihrem hook_init () verwenden, oder Sie haben möglicherweise einen Menürouter-Pfad festgelegt, der von einem Modul oder einem Include abhängt, das Drupal auf dem Bootstrap nicht finden kann. Letztendlich habe ich Folgendes getan (Ihre Wege mögen anders sein):
Schritt 1: Ersetzen Sie sites / all / modules durch sites / all / modules / 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');
Schritt 2: Ersetzen Sie sites / all / modules / contrib durch sites / all / modules / custom für benutzerdefinierte Module mit Namespace
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_%';
Schritt 3: Verschieben Sie die Dev-Module in sites / all / modules / 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%';
Schritt 4: Löschen Sie die Caches, damit die Dinge ordnungsgemäß gebootet werden
TRUNCATE TABLE cache
TRUNCATE TABLE cache_bootstrap
TRUNCATE TABLE cache_menu
TRUNCATE TABLE cache_page
TRUNCATE TABLE cache_path
Hinweis: Wenn Sie ein benutzerdefiniertes Modul oder einen Beitrag wie LoginToboggan für die Verarbeitung von 403 verwenden (Zugriff verweigert) und sich während dieses Vorgangs abgemeldet haben, müssen Sie möglicherweise die include_file
Spalte in der menu_roter
Tabelle aktualisieren , um den neuen Pfad für die Include-Datei zu verwenden . Dies ist wahrscheinlich ein seltenes Ereignis.
UPDATE menu_router SET include_file = 'sites/all/modules/custom/my_custom_namespace/includes/foo.inc' WHERE path = 'access-denied'
Sobald diese Abfragen ausgeführt wurden - was nur einen Sekundenbruchteil dauert -, rufen Sie admin / config / development / performance auf und leeren Sie den Cache, damit die Menüpfade neu erstellt werden.
registry_file
Tabelle abschneiden, wodurch Drupal gezwungen wird, alle Dateien erneut zu scannen und die Tabelle neu zu erstellen.