Comment résoudre l'erreur «Le module suivant est absent du système de fichiers»?

9

J'obtiens l'erreur suivante sur un site Drupal 8.

Le module suivant est absent du système de fichiers

Il semble qu'un module personnalisé ait été installé et supprimé sans le désinstaller.

Comment puis-je corriger cette erreur?

Kevin
la source
Utilisez-vous la gestion de la configuration sur le site?
Adrian Cid Almaguer
Oui, je l'utilise
Kevin
Certains avancent avec le problème? Je veux savoir à la fin comment résoudre le problème, cela peut m'arriver aussi dans n'importe quel projet.
Adrian Cid Almaguer du
Dans Drupal 8.7.3, je reçois "le module suivant manque dans le système de fichiers: php dans drupal_get_filename ()" mais lorsque j'essaie d'installer le module php, j'obtiens une erreur à ce sujet déjà existant dans le noyau. L'erreur m'empêche de désinstaller quoi que ce soit. Hier, j'ai mis à jour vers 8.7.3 et aujourd'hui vers 8.5.3 et je ne peux pas secouer l'erreur. Le cache a été effacé à chaque fois et tous les modules que je connais ont été restaurés. Je vois des notes sur Drush mais comment l'installer sur 8.7.3?
WilliamK

Réponses:

11

Si vous avez Drupal Console, un moyen rapide de résoudre ce problème consiste à générer un module avec le même nom de machine, puis à le désinstaller.

$ drupal generate:module

Tapez ensuite le nom de l'ordinateur à l'invite appropriée et acceptez les valeurs par défaut pour tout le reste.

$ drush pm-uninstall

Ensuite, vous pouvez supprimer le module nouvellement généré du système de fichiers et continuer votre journée.

(NB vous pouvez avoir besoin de conserver ce module généré, sinon l'erreur reviendra. Dans ce cas, si vous devez installer un module contrib avec le même nom, supprimez le module généré après avoir ajouté le module contrib. Ensuite, videz le cache. )

naomi
la source
2
C'était l'option la plus simple après que la requête SQL ci-dessus ne fonctionnerait pas.
Chris Charlton
Cela a aidé à résoudre mon erreur pour le module introuvable.
Akshay Sawant
Si quelqu'un a besoin d'aide pour installer Drupal Console, j'ai trouvé cette page utile. Gardez à l'esprit que vous voudrez installer le lanceur de console Drupal globalement et la console Drupal localement (dans la racine du projet de votre installation Drupal).
Doomd
10

En supposant que vous avez supprimé un module personnalisé sans importance qui ne nécessite aucune routine de désinstallation pour être déclenché, vous pouvez utiliser la commande Drush suivante.

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

Voir Comment corriger les messages d'avertissement «Le module suivant est absent du système de fichiers ...» pour plus d'informations et d'alternatives.

leymannx
la source
1
J'ai essayé plusieurs fois et cela pour D8 ne fonctionne pas au moins pour d8.7. Je recommanderais la solution ci-dessous avec la génération du module factice puis la désinstallation.
Marko Blazekovic
3

Maintenant, avec le module de gestion de la configuration, la configuration des modules est stockée dans le fichier core.extension.yml.

Allez pour éditer le fichier et essayez de trouver le module manquant dans le système de fichiers puis supprimez la ligne et importez la config ( drush cim).

Si cela ne fonctionne pas mais que vous avez trouvé le module, créez à nouveau le module (juste le dossier et un fichier .info.yml valide) et relancez la drush cimcommande. Cela désinstallera le module.

Adrian Cid Almaguer
la source
4
Cela fonctionne, mais la bonne façon est de restaurer le module et de le désinstaller. Si ce module fournit des schémas, une configuration ou autre, il restera dans le système et vous devrez le nettoyer manuellement sinon.
Berdir
1
@Berdir si vous ne trouvez pas le module personnalisé, nous pouvons faire autre chose?
Adrian Cid Almaguer
Pas vraiment, alors vous devez le faire manuellement comme suggéré ci-dessus avec drush cedit ou import / export dans le fichier core.extension.
Berdir
0

La façon dont je l'ai corrigé était en utilisant drush et composer. Obtenez le module avec require, installez et désinstallez avec drush puis supprimez avec composer.

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

! L'étape avec drush enn'est probablement pas nécessaire

Bo rislav
la source