In Drupal 7 konnte ich die {system}
Tabelle in der Datenbank manuell bearbeiten , um ein Stubbon-Modul zu deaktivieren. Auf meiner Drupal 8-Site ist diese Tabelle nicht mehr vorhanden.
Wie kann ich ein Modul in Drupal 8 manuell deaktivieren?
Die system
Daten der Drupal 7- Tabelle werden jetzt in der config
Tabelle in Drupal 8 für den core.extension
Parameter gespeichert .
Lösung 1: Konfiguration aktualisieren
Sie können den folgenden Code drush eval
ausführen, indem Sie die Bereitstellung des Devel-Moduls für verwenden oder verwenden Execute PHP Code
.
// Read the configuration.
$module_data = \Drupal::config('core.extension')->get('module');
// Unset the modules you do not need.
unset($module_data['MODULE_NAME']);
// Write the configuration.
\Drupal::configFactory()->getEditable('core.extension')->set('module', $module_data)->save();
Sie können dies alles in einem schnellen Einzeiler mit tun drush
.
drush eval "\$module_data = \Drupal::config('core.extension')->get('module'); unset(\$module_data['MODULE_NAME']); \Drupal::configFactory()->getEditable('core.extension')->set('module', \$module_data)->save();"
Lösung 2: Bearbeiten Sie die Konfigurationstabelle, wenn Sie PHP nicht ausführen können
Wenn die Site aufgrund des problematischen Moduls beschädigt ist und Sie nicht einmal PHP-Code ausführen können, können Sie die config
Tabelle möglicherweise direkt bearbeiten .
In der Zeile in der config
Tabelle wo name = "core.extension"
und bearbeiten Sie die BLOB-Spalte data
. Das data
ist ein serialisiertes PHP-Array, bei dem Sie das Modul, das Sie entfernen möchten, aus dem module
Schlüssel der Konfiguration entfernen müssen .
Lösung 3: Schnelle und schmutzige Lösung
cache_config
Diese Lösung kann jedoch zu Meldungen führen, die besagen, dass das Modul nicht im Dateisystem vorhanden ist, was bedeutet, dass etwas nicht stimmt. Aber zumindest wird das defekte Modul deaktiviert und Sie können in den meisten Fällen auf Ihre Site zugreifen.
Cache leeren
Manchmal müssen Sie möglicherweise den Cache leeren, nachdem Sie die obigen Schritte ausgeführt haben. Lesen Sie diese praktische Dokumentation zum Löschen des Caches .
drush eval
. Ein Beispiel für einendrush eval "\$module_data = \Drupal::config('core.extension')->get('module'); unset(\$module_data['example_module']); \Drupal::configFactory()->getEditable('core.extension')->set('module', \$module_data)->save();
Einzeiler ist: Beachten Sie das mit einem Escapezeichen versehene Dollarzeichen, damit die Befehlszeile nicht$module
als Bash-Variable falsch interpretiert wird.Mach das:
quelle
drush cache-rebuild
zuconfig
Tabelle where manuellname = 'core.extension'
und entfernen Sie das Modul aus dem Daten-Blob, bei dem es sich um ein serialisiertes Array handelt.(...s:6:"module";a:HERE;{...)
cache_config
Kürzen Sie die Tabelle von phpmyadmin oder über die Befehlszeile.quelle
i:0;s:8:"name of the module";
s:8:"name of the module";i:0;
. @Valli bedeutete, dass das Array, das die Anzahl der Module beschreibt, in der Anzahl um die Anzahl der entfernten Module verringert werden sollte. Der Anfang des Blobs in meinem Setup ista:4:{s:6:"module";a:59:{
, das ist ein Array von 59 Modulen. Wenn Sie zwei löschen, ändern Sie diesen Array-Wert auf 57.Erwägen Sie die Verwendung von Drush. Drupal 8 definiert immer noch, was "Deaktivieren von Modulen" sein soll. Es gibt eine laufende Diskussion, ob es diese Option geben sollte oder ob sie entfernt werden sollte.
quelle
Versuchen Sie in Drupal 8, das Modul aus Ihrem Modulordner zu entfernen und führen Sie rebuild.php aus.
Versuchen Sie es
drush pm-uninstall module-name
auch.quelle
Ich habe alle anderen Antworten ausprobiert, aber immer wieder eine Drupal-Fehlermeldung erhalten. Um das Problem zu lösen, musste ich eine Zeile aus der key_value-Tabelle entfernen (suchen Sie den Modulnamen in der name-Spalte)
quelle
Wenn Sie etwas in Bezug auf die Drupal-Konfiguration aktualisieren müssen, verwenden Sie in diesem Fall
core.extension
Drush:[Drush 8.x in diesem Beispiel]
quelle
Dafür gibt es ein Modul. Dieses Modul wurde im August 2013 auf drupal.org veröffentlicht . Für den Fall, dass jemand braucht.
Module deaktivieren
Wie auf der Seite dieses Moduls angegeben,
quelle
Auf diese Weise habe ich ein Modul mit dem Namen "better_messages" manuell aus meiner Drupal 8-Instanz entfernt. Sobald ich das "better_messages" -Modul installiert habe, ist die Site ausgefallen. Es gab also keine Möglichkeit, das Modul von der Benutzeroberfläche zu deinstallieren. Ich habe Drush nicht installiert. Ich habe viele Einstellungen in Foren vorgenommen, aber so funktionierte es schließlich für mich.
1 Benennen Sie das Modul in old_better_messages im Ordner modules um.
Über die URL lief http: // IP: port / ordnername / rebuild.php . Dadurch wurde sichergestellt, dass die Site wieder verfügbar ist, jedoch nur im schreibgeschützten Modus. Ich konnte die Admin-Aktivitäten nicht ausführen oder Artikel nicht bearbeiten.
Mit dem folgenden Befehl wird der Eintrag aus der Datenbank gelöscht
DELETE FROM key_value WHERE collection = 'system.schema' AND name = 'better_messages';
In meinem Fall gab es keinen Eintrag in der Datenbank. Ich denke, es könnte wegen der verschiedenen Stunts, die ich früher gemacht habe, gelöscht worden sein.
Dies löste das Problem. Dies basiert auf meiner Interpretation von https://www.drupal.org/node/2487215
quelle
Jigarius 'Antwort oben hat irgendwie funktioniert ...
Ich musste: // die Konfiguration lesen.
Welches sollte das gleiche tun. Ich bin mir nicht sicher, warum es nicht so funktioniert hat, wie Jigarius es geschrieben hat ...
quelle