J'ai restauré une sauvegarde de la production localement et j'ai essayé de déplacer des éléments et d'appuyer sur admin / modules ou d'exécuter registry_rebuild (), mais cela n'a pas empêché la génération d'erreurs fatales. Cela me semble logique car certains modules peuvent utiliser includes ou quoi que ce soit dans leur hook_init (), ou vous pouvez avoir un chemin de routeur de menu qui dépend d'un module ou d'une inclusion que Drupal ne trouve pas au démarrage. En fin de compte, voici ce que j’ai fait (vos chemins peuvent être différents):
Étape 1: Remplacer les sites / all / modules par 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');
Étape 2: remplacez sites / all / modules / contrib par sites / all / modules / custom pour des modules d'espacement de noms personnalisés
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_%';
Étape 3: Déplacez les modules de développement vers des 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%';
Étape 4: Vider les caches pour que les choses démarrent correctement
TRUNCATE TABLE cache
TRUNCATE TABLE cache_bootstrap
TRUNCATE TABLE cache_menu
TRUNCATE TABLE cache_page
TRUNCATE TABLE cache_path
Remarque: Si vous utilisez un module personnalisé ou une contribution telle que LoginToboggan pour gérer 403 (accès refusé) et que vous vous êtes déconnecté au cours de ce processus, vous devrez peut-être mettre à jour la include_file
colonne de la menu_roter
table pour utiliser le nouveau chemin du fichier à inclure. . C'est probablement un événement rare.
UPDATE menu_router SET include_file = 'sites/all/modules/custom/my_custom_namespace/includes/foo.inc' WHERE path = 'access-denied'
Une fois que ces requêtes ont été exécutées (ce qui ne prendra que quelques secondes), lancez admin / config / development / performance et effacez le cache afin que les chemins de menus soient reconstruits.
registry_file
table, ce qui forcera drupal à analyser à nouveau tous les fichiers et à reconstruire la table.