Ich habe nach Antworten auf diese Frage gesucht, ohne dass ich Glück gehabt hätte. Nach dem, was ich in der Datenbankstruktur beobachte, ist die Position zu den Modulen in der 'System'-Tabelle angegeben. Die einzige Lösung, die ich habe, besteht darin, eine SQL-Abfrage zu schreiben, um die Spalte "Dateiname" zu aktualisieren.
Gibt es eine bessere / sauberere Lösung für dieses Problem, z. B. ein Contrib-Modul?
quelle
registry_file
Tabelle abschneiden, wodurch Drupal gezwungen wird, alle Dateien erneut zu scannen und die Tabelle neu zu erstellen.DELETE FROM registry_file;
undrebuild_registry()
in my einen Aufruf hinzugefügtpage.tpl.php
.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
Schritt 2: Ersetzen Sie sites / all / modules / contrib durch sites / all / modules / custom für benutzerdefinierte Module mit Namespace
Schritt 3: Verschieben Sie die Dev-Module in sites / all / modules / dev
Schritt 4: Löschen Sie die Caches, damit die Dinge ordnungsgemäß gebootet werden
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 dermenu_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.
quelle
update menu_router set include_file = 'sites/all/modules/contrib/logintoboggan/logintoboggan.admin.inc' WHERE path = 'admin/config/system/logintoboggan'; update menu_router set include_file = 'sites/all/modules/contrib/logintoboggan/logintoboggan.validation.inc' WHERE path = 'toboggan/revalidate/%'; update menu_router set include_file = 'sites/all/modules/contrib/logintoboggan/logintoboggan.validation.inc' WHERE path = 'user/validate/%/%/%';
Probieren Sie das coole Tool von Mark Sonnabaum: Drush Rebuild Project Paths . Es automatisiert den Prozess; hat super für mich funktioniert. Verwendet natürlich Drush .
Ich werde den Vorschlag unterstützen, dass Sie dies auf einer Kopie Ihrer Site-Datenbank versuchen.
quelle
Für die Aufzeichnung gibt es einen großartigen Drush-Befehl zum Neuerstellen der Registrierung: http://drupal.org/project/registry_rebuild
Auf der Projektseite finden Sie viele Informationen.
quelle
sites/all/modules
waren und in eincontrib
Unterverzeichnis verschoben werden mussten . Alles was ichdrush dl registry_rebuild; mv OLD_PATH/module NEW_PATH/module; drush rr
drush rr --fire-bazooka
führt dies zu Fehlern, ist aberdrush rr
in Ordnung.Erstens, sichern Sie immer Ihre Datenbank, so einfach, dass Sie sich selbst stürzen, wenn etwas schief geht und Sie nicht sichern.
Ich bin mir nicht sicher, ob es wichtig ist, ob Sie die Module deaktivieren oder nicht. Vielleicht möchten Sie es tun, nur für den Fall. Dann mach das:
Alles erledigt! Drupal sucht erneut nach allen installierten Modulen.
quelle
Versuchen Sie es mit dem Modul " Registry Rebuild" . Es hat jedes Mal bei mir funktioniert.
Hier ist ein Zitat darüber (von der Projektseite des Moduls):
quelle
Sie können das Modul " Registry Rebuild" verwenden , das über den
Drush RR
Befehl in Drush integriert wird .Grundsätzlich machen Sie folgende Schritte:
Ich habe es zum ersten Mal über DrupalEasy Podcast # 133 gelernt / entdeckt , was weiter erklärt, wie dieses Modul / drush cmd verwendet werden kann.
PS: Natürlich führen Sie zuerst ein Backup Ihrer Site durch ...
quelle
Besuchen Sie / admin / build / modules, um die Pfade in der Systemtabelle neu zu erstellen. Manchmal kann Drupal nicht mehr booten, so dass diese Lösung in diesem Fall nicht funktioniert. Wenn dies nicht funktioniert, können Sie Drush Rebuild Project Paths wie in einer vorherigen Antwort beschrieben verwenden. Sie müssen den neuen Befehl drush hinzufügen, bevor Sie den Bootstrap unterbrechen können. Um den neuen Befehl Check - out der hinzufügen readme ‚s COMMANDS Abschnitt
quelle
Ich hatte einige Probleme damit
drush dl
, wegen der Probleme mit dem Modulverzeichnis nicht zu arbeiten. Im Allgemeinen mag ich Stapelantworten, die ich einfach einfügen kann, um die Dinge zum Laufen zu bringen. Hier finden Sie einige Zeilen, in denen Drush Rebuild Registry installiert und auf Ihrer Site ausgeführt wird, wenn Sie sich bereits im richtigen Site-Verzeichnis befinden.quelle
Ich bin mir bei einer echten Drupal-esk-Antwort nicht 100% sicher, aber meiner Erfahrung nach:
Ich habe versehentlich einen meiner benutzerdefinierten Modulordner in einen anderen benutzerdefinierten Modulordner verschoben, als ich FTP auf den Server geschickt habe. Sie arbeiteten beide noch. Drupal schien es als separates Modul erkannt zu haben, obwohl es sich im Ordner eines anderen Moduls befand. Ich musste das Modul nicht deaktivieren.
** Dieses Modul, das ich verschoben habe, hatte KEINE .install-Datei, daher bin ich mir nicht sicher, ob das wichtig ist.
quelle
Drupal - Distributionen behandeln dies nicht gut, so vor kurzem nach versehentlich mit einer Kopie enden Entity API in
sites/all/
auf einer Panopoly Website, nichts davon gearbeitet. Neuaufbau der Registrierung, Laden der Modulseite und alles andere verursachte einen schwerwiegenden Fehler.Das Deaktivieren des Moduls ist auch nicht einfach, wenn Sie so etwas wie die Entity-API verschieben müssen, die von Tonnen anderer Module in Panopoly benötigt wird.
Um dies zu lösen, würden Sie für die Entity-API Folgendes tun:
Aktualisieren Sie den Pfad in der Systemtabelle:
Erstellen Sie dann die Registrierung neu:
quelle
Drupal 7
Zunächst einmal versuchen
drush rr
.Wenn dies nicht funktioniert, versuchen Sie nach dem Verschieben der Dateien die folgenden Drush-Befehle in Ihrem Drupal-Stammverzeichnis:
Wenn dies nicht funktioniert, suchen Sie die Tabelle mit den alten Informationen zum Pfad nach:
Wenn keine gefunden wird, bedeutet dies, dass es sich um Ihren externen Cache handelt.
Wenn ja, vergessen Sie nicht, sie neu zu starten, zB:
Weitere Informationen: Mit welcher Methode werden Caches im Drupal gelöscht?
Alternativ können Sie die folgenden MySQL-Abfragen ausführen, nachdem Sie die Dateien verschoben haben:
quelle
Es wird empfohlen, die Module in die Unterordner contrib / dev / patched / custom zu verschieben. Es gibt keine Leistungssteigerungen, dies geschieht jedoch aus praktischen und ästhetischen Gründen. Dies wird das Leben zukünftiger Entwickler erleichtern.
Sie können die meisten Contrib-Module problemlos auf einer Live-Site in Unterordner verschieben. Sie sollten die Caches danach löschen. Wenn Sie drush nicht verwenden und feststellen, dass Sie nicht mehr auf die Cache-Löschseite zugreifen können, müssen Sie /update.php besuchen oder die Cache-Tabellen manuell kürzen. Beim Verschieben des Entity-API-Moduls musste ich immer nur den letzten Schritt ausführen.
Das Verschieben von Core-Modulen ist technisch möglich, aber ich würde es weder empfehlen, noch sehe ich einen gültigen Grund dafür.
Update: Das Verschieben von Modulen wie der Entitäts-API erfordert möglicherweise eine Neuerstellung der Registrierung. Überprüfen Sie die Seite " registry_rebuild ".
quelle
Sie können einfach einen Sym-Link im Verzeichnis sites / all / modules hinzufügen, der auf sites / all / contrib verweist. Ich bin nicht sicher, ob es Ihr Problem löst. Es gibt auch andere Lösungen, einschließlich des Installationsprofils oder einer Drush-Make-Datei. Ich weiß nicht genug, um Details zu liefern, aber es ist zumindest eine Richtung, die Sie betrachten können.
quelle