W Drupal 7 mogłem ręcznie edytować {system}
tabelę w bazie danych, aby wyłączyć moduł skrótowy. Na mojej stronie Drupal 8 ten stół zniknął.
Jak mogę ręcznie wyłączyć moduł w Drupal 8?
Dane system
tabeli Drupal 7 są teraz przechowywane w config
tabeli w Drupal 8 w odniesieniu do core.extension
parametru.
Rozwiązanie 1: Zaktualizuj konfigurację
Możesz uruchomić następujący kod, używając drush eval
lub możesz używać przepisu modułu Devel do 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();
Możesz to wszystko zrobić za pomocą szybkiego linku 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();"
Rozwiązanie 2: Edytuj tabelę konfiguracji, jeśli nie możesz uruchomić PHP
Jeśli witryna jest zepsuta z powodu problematycznego modułu i nie możesz nawet uruchomić kodu PHP, być może możesz edytować config
tabelę bezpośrednio.
W wierszu w config
tabeli gdzie name = "core.extension"
i edytuj kolumnę BLOB data
. data
Jest odcinkach tablicy PHP, gdzie trzeba usunąć moduł, którego chcesz się pozbyć z module
kluczem konfiguracji.
Rozwiązanie 3: Szybkie i brudne rozwiązanie
cache_config
Jednak to rozwiązanie może powodować pojawienie się komunikatów informujących, że moduł nie istnieje w systemie plików, co oznacza, że coś jest nie tak. Ale przynajmniej uszkodzony moduł zostaje wyłączony i w większości przypadków można uzyskać dostęp do witryny.
Czyszczenie pamięci podręcznej
Czasami może być konieczne wyczyszczenie pamięci podręcznej po wykonaniu powyższych kroków. Przeczytaj tę przydatną dokumentację dotyczącą czyszczenia pamięci podręcznej .
drush eval
. Przykładem jednowierszowym jest:drush eval "\$module_data = \Drupal::config('core.extension')->get('module'); unset(\$module_data['example_module']); \Drupal::configFactory()->getEditable('core.extension')->set('module', \$module_data)->save();
Zwróć uwagę na znak dolara, aby linia poleceń nie interpretowała błędnie$module
jako zmiennej Bash.Zrób to:
źródło
drush cache-rebuild
zbytconfig
tabelę gdziename = 'core.extension'
i usuń moduł z obiektu blob danych, który jest szeregową tablicą.(...s:6:"module";a:HERE;{...)
cache_config
tabelę z phpmyadmin lub za pomocą wiersza polecenia.źródło
i:0;s:8:"name of the module";
s:8:"name of the module";i:0;
. @Valli miał na myśli to, że tablica opisująca liczbę modułów powinna zostać zmniejszona pod względem liczby usuniętych modułów. Początek obiektu blob w mojej konfiguracji toa:4:{s:6:"module";a:59:{
, który jest tablicą 59 modułów. Jeśli usuniesz dwa, zmień tę wartość tablicy na 57.Rozważ użycie Drusha. Drupal 8 wciąż określa, jakie powinny być „moduły wyłączające”. Jest trwa dyskusja , czy nie powinno być tak, że opcja lub powinno zostać usunięte.
źródło
W Drupal 8 spróbuj usunąć moduł z folderu modułu i uruchom rebuild.php.
Spróbuj
drush pm-uninstall module-name
również.źródło
Próbowałem wszystkich innych odpowiedzi, ale ciągle pojawiał się komunikat o błędzie drupala. Aby go rozwiązać, musiałem usunąć wiersz z tabeli wartość_klucza (poszukaj nazwy modułu w kolumnie nazwy)
źródło
Jeśli potrzebujesz zaktualizować cokolwiek związanego z konfiguracją Drupala, w tym przypadku
core.extension
użyj Drusha:[Drush 8.x w tym przykładzie]
źródło
Jest na to moduł. Ten moduł został opublikowany w sierpniu 2013 r. Na drupal.org . W razie potrzeby.
Wyłącz moduły
Jak podano na stronie tego modułu,
źródło
W ten sposób ręcznie usunąłem moduł o nazwie „better_messages” z mojej instancji Drupal 8. Gdy tylko zainstalowałem moduł „better_messages”, strona się zawiesiła. Nie było więc sposobu na odinstalowanie modułu z interfejsu użytkownika. Nie mam zainstalowanego Drusha. Dokonałem wielu ustawień podanych na forach, ale tak to w końcu dla mnie zadziałało.
1 Zmień nazwę modułu na old_better_messages w folderze modułów.
Przez adres URL uruchomiono http: // IP: port / nazwa_folderu / rebuild.php . Zapewniło to powrót witryny, ale tylko w trybie tylko do odczytu. Nie mogłem wykonywać czynności administracyjnych ani edytować artykułów.
Użyto następującego polecenia, aby usunąć wpis z bazy danych
DELETE FROM key_value WHERE collection = 'system.schema' AND name = 'better_messages';
W moim przypadku nie było wpisu w bazie danych. Myślę, że mógł zostać usunięty z powodu różnych sztuczek, które zrobiłem wcześniej.
To rozwiązało problem. Jest to oparte na mojej interpretacji https://www.drupal.org/node/2487215
źródło
Powyższa odpowiedź Jigariusa zadziałała ...
Musiałem: // Przeczytać konfigurację.
Co powinno zrobić to samo. Nie jestem pewien, dlaczego to nie zadziałało, jak napisał to Jigarius ...
źródło