Jak rozwiązać błąd „Brakuje następującego modułu w systemie plików”?

9

W witrynie Drupal 8 pojawia się następujący błąd.

W systemie plików brakuje następującego modułu

Wygląda na to, że moduł niestandardowy został zainstalowany i usunięty bez odinstalowywania.

Jak mogę naprawić ten błąd?

Kevin
źródło
Czy korzystasz z zarządzania konfiguracją w serwisie?
Adrian Cid Almaguer,
Tak, używam tego
Kevin,
Niektórzy postępują z problemem? Na koniec chcę wiedzieć, jak rozwiązać problem, to też może przynieść mnie w każdym projekcie.
Adrian Cid Almaguer,
W Drupal 8.7.3 otrzymuję „w systemie plików brakuje następującego modułu: php w drupal_get_filename ()”, ale kiedy próbuję zainstalować moduł php, pojawia się błąd, że już istnieje w rdzeniu. Błąd uniemożliwia mi odinstalowanie czegokolwiek. Wczoraj zaktualizowałem do wersji 8.7.3, a dziś do 8.5.3 i nie mogę wstrząsnąć błędem. Pamięć podręczna jest czyszczona za każdym razem i wszystkie moduły, o których wiem, zostały przywrócone. Widzę uwagi na temat Drusha, ale jak zainstalować go na 8.7.3?
WilliamK,

Odpowiedzi:

11

Jeśli masz konsolę Drupal, to szybkim sposobem, aby to naprawić, jest wygenerowanie modułu o tej samej nazwie komputera, a następnie odinstalowanie go.

$ drupal generate:module

Następnie wpisz nazwę komputera w odpowiednim monicie i zaakceptuje wartości domyślne dla wszystkich innych elementów.

$ drush pm-uninstall

Następnie możesz usunąć nowo wygenerowany moduł z systemu plików i kontynuować dzień.

(Uwaga: może być konieczne zachowanie tego wygenerowanego modułu, w przeciwnym razie błąd zwróci. W takim przypadku, jeśli musisz zainstalować moduł contrib o tej samej nazwie, usuń wygenerowany moduł po dodaniu modułu contrib. Następnie wyczyść pamięć podręczną. )

naomi
źródło
2
To była najprostsza opcja po tym, jak powyższe zapytanie SQL nie działało.
Chris Charlton,
Pomogło rozwiązać mój błąd związany z brakiem modułu.
Akshay Sawant,
Jeśli ktoś potrzebuje pomocy w instalacji Drupal Console, uważam tę stronę za pomocną. Pamiętaj, że będziesz chciał zainstalować program uruchamiający konsolę Drupal globalnie, a konsolę Drupal lokalnie (w katalogu głównym instalacji Drupal).
Doomd
10

Zakładając, że usunąłeś nieistotny moduł niestandardowy, który nie wymaga żadnej procedury odinstalowania, możesz użyć następującego polecenia Drush.

  • Drupal 7

    drush sql-query "DELETE from system where type = 'module' AND name = 'MYMODULE';"
  • Drupal 8

    drush sql-query "DELETE FROM key_value WHERE collection='system.schema' AND name='MYMODULE';"

Zobacz Jak naprawić komunikat „Brakuje następującego modułu w systemie plików ...”, aby uzyskać więcej informacji i alternatyw.

leymannx
źródło
1
Próbowałem kilka razy i to dla D8 nie działa przynajmniej dla d8.7. Poleciłbym poniższe rozwiązanie z wygenerowaniem fałszywego modułu, a następnie odinstalowaniem.
Marko Blazekovic
3

Teraz z modułem Configuration Management konfiguracja modułów jest przechowywana w pliku core.extension.yml.

Przejdź do edycji pliku i spróbuj znaleźć brakujący moduł z systemu plików, a następnie usuń wiersz i zaimportuj config ( drush cim).

Jeśli to nie zadziała, ale moduł został znaleziony, utwórz go ponownie (tylko folder i prawidłowy plik .info.yml) i ponownie uruchom drush cimkomendę. Spowoduje to odinstalowanie modułu.

Adrian Cid Almaguer
źródło
4
To działa, ale poprawnym sposobem jest przywrócenie modułu i odinstalowanie go. Jeśli moduł ten udostępnia schematy, konfigurację lub coś takiego, pozostanie w systemie i w przeciwnym razie będziesz musiał go wyczyścić ręcznie.
Berdir,
1
@Berdir, jeśli nie możesz znaleźć niestandardowego modułu, możemy zrobić coś innego?
Adrian Cid Almaguer,
Nie bardzo, musisz to zrobić ręcznie, jak sugerowano powyżej, za pomocą drush cedit lub importu / eksportu w pliku core.extension.
Berdir,
0

Naprawiłem to za pomocą drusha i kompozytora. Pobierz moduł z wymaganiem, zainstaluj i odinstaluj za pomocą drush, a następnie usuń za pomocą kompozytora.

composer require drupal/missing_module
drush en missing_module
drush pmu missing_module
composer remove drupal/missing_module

! Krok drush enprawdopodobnie nie jest konieczny

Bo rislav
źródło