Wie kann der Fehler "Das folgende Modul fehlt im Dateisystem" behoben werden?

9

Ich erhalte den folgenden Fehler auf einer Drupal 8-Site.

Das folgende Modul fehlt im Dateisystem

Es sieht so aus, als ob ein benutzerdefiniertes Modul installiert und gelöscht wurde, ohne es zu deinstallieren.

Wie kann ich diesen Fehler beheben?

Kevin
quelle
Verwenden Sie das Konfigurationsmanagement auf der Site?
Adrian Cid Almaguer
Ja, ich benutze das
Kevin
Einige kommen mit dem Problem voran? Ich möchte am Ende wissen, wie Sie das Problem lösen, das kann mich auch in jedem Projekt erreichen.
Adrian Cid Almaguer
In Drupal 8.7.3 erhalte ich die Meldung "Das folgende Modul fehlt im Dateisystem: PHP in drupal_get_filename ()", aber wenn ich versuche, das PHP-Modul zu installieren, wird eine Fehlermeldung angezeigt, dass es bereits im Core vorhanden ist. Der Fehler hindert mich daran, etwas zu deinstallieren. Gestern habe ich auf 8.7.3 und heute auf 8.5.3 aktualisiert und kann den Fehler nicht abschütteln. Der Cache wurde jedes Mal geleert und alle mir bekannten Module wurden wiederhergestellt. Ich sehe Hinweise zu Drush, aber wie installiere ich es auf 8.7.3?
WilliamK

Antworten:

10

Wenn Sie über Drupal Console verfügen, können Sie dies schnell beheben, indem Sie ein Modul mit demselben Computernamen generieren und anschließend deinstallieren.

$ drupal generate:module

Geben Sie dann den Computernamen an der entsprechenden Eingabeaufforderung ein und akzeptieren Sie die Standardeinstellungen für alles andere.

$ drush pm-uninstall

Anschließend können Sie das neu generierte Modul aus dem Dateisystem löschen und Ihren Tag fortsetzen.

(Hinweis: Möglicherweise müssen Sie das generierte Modul beibehalten. Andernfalls wird der Fehler zurückgegeben. Wenn Sie in diesem Fall ein Contrib-Modul mit demselben Namen installieren müssen, entfernen Sie das generierte Modul nach dem Hinzufügen des Contrib-Moduls. Löschen Sie dann den Cache. )

naomi
quelle
2
Dies war die einfachste Option, nachdem die obige SQL-Abfrage nicht funktioniert hatte.
Chris Charlton
Es hat geholfen, meinen Fehler für das nicht gefundene Modul zu beheben.
Akshay Sawant
10

Angenommen, Sie haben ein unwichtiges benutzerdefiniertes Modul gelöscht, für das keine Deinstallationsroutine ausgelöst werden muss, können Sie den folgenden Drush-Befehl verwenden.

  • 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';"

Siehe Wie beheben „Das folgende Modul wird aus dem Dateisystem fehlt ...“ Warnmeldungen für weitere Informationen und Alternativen.

Leymannx
quelle
1
Ich habe es ein paar Mal versucht und dies für D8 funktioniert zumindest für d8.7 nicht. Ich würde die folgende Lösung empfehlen, indem ich ein Dummy-Modul generiere und es dann deinstalliere.
Marko Blazekovic
3

Mit dem Konfigurationsverwaltungsmodul wird die Modulkonfiguration jetzt in der Datei core.extension.yml gespeichert.

Gehen Sie zum Bearbeiten der Datei und versuchen Sie, das fehlende Modul aus dem Dateisystem zu finden. Löschen Sie dann die Zeile und importieren Sie die config ( drush cim).

Wenn dies nicht funktioniert, Sie das Modul jedoch gefunden haben, erstellen Sie das Modul erneut (nur den Ordner und eine gültige .info.yml-Datei) und führen Sie den drush cimBefehl erneut aus. Dadurch wird das Modul deinstalliert.

Adrian Cid Almaguer
quelle
4
Dies funktioniert, aber der richtige Weg ist, das Modul wiederherzustellen und zu deinstallieren. Wenn dieses Modul Schemas, Konfigurationen oder ähnliches bereitstellt, verbleibt es im System und Sie müssen es andernfalls manuell bereinigen.
Berdir
1
@Berdir Wenn Sie das benutzerdefinierte Modul nicht finden können, können wir noch etwas tun?
Adrian Cid Almaguer
Nicht wirklich, dann müssen Sie es manuell tun, wie oben vorgeschlagen, mit drush cedit oder import / export in der Datei core.extension.
Berdir
0

Die Art und Weise, wie ich es reparierte, war mit Drush und Komponist. Holen Sie sich das Modul mit require, installieren und deinstallieren Sie es mit drush und entfernen Sie es mit Composer.

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

! Der Schritt mit ist drush enwahrscheinlich nicht notwendig

Bo Rislav
quelle