「次のモジュールがファイルシステムにありません」というエラーの解決方法


9

Drupal 8サイトで次のエラーが発生します。

次のモジュールがファイルシステムにありません

カスタムモジュールがアンインストールされずにインストールおよび削除されたように見えます。

このエラーを修正するにはどうすればよいですか?


サイトで構成管理を使用していますか?
Adrian Cid Almaguer 2017

はい、使用しています
Kevin

問題が発生した人もいますか?最後にどのように問題を解決するのか知りたいのですが、これはどのプロジェクトでも私に届きます。
エイドリアンCid Almaguer 2017

Drupal 8.7.3では、「次のモジュールがファイルシステムにありません:php in drupal_get_filename()」と表示されますが、phpモジュールをインストールしようとすると、コアにすでに存在するというエラーが表示されます。エラーにより、何もアンインストールできません。昨日8.7.3にアップグレードし、今日8.5.3にアップグレードしましたが、エラーを回避できません。キャッシュは毎回クリアされ、私が知っているすべてのモジュールが復元されました。Drushに関するメモが表示されますが、8.7.3にインストールするにはどうすればよいですか?
WilliamK

回答:


11

Drupalコンソールがある場合、これを修正する簡単な方法は、同じマシン名でモジュールを生成してからアンインストールすることです。

$ drupal generate:module

次に、適切なプロンプトでマシン名を入力し、その他すべてのデフォルトを受け入れます。

$ drush pm-uninstall

次に、新しく生成されたモジュールをファイルシステムから削除して、1日を続けることができます。

(注意:生成されたモジュールを保持する必要がある場合があります。それ以外の場合はエラーが返されます。その場合、同じ名前のcontribモジュールをインストールする必要がある場合は、contribモジュールを追加した後、生成されたモジュールを削除します。次に、キャッシュをクリアします。 )


2
これは、上記のSQLクエリが機能しない場合の最も簡単なオプションです。
Chris Charlton、

モジュールが見つからないというエラーを解決するのに役立ちました。
Akshay Sawant

Drupalコンソールのインストールについて誰かが助けを必要としている場合、このページは役に立ちました。Drupalコンソールランチャーをグローバルにインストールし、さらにDrupalコンソールをローカル(Drupalインストールのプロジェクトルート)にインストールすることを覚えておいてください。
Doomd

10

アンインストールルーチンをトリガーする必要のない重要でないカスタムモジュールを削除した場合、次の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';"

詳細と代替方法については、「次のモジュールがファイルシステムにない...」警告メッセージを修正する方法を参照してください。


1
私は数回試しましたが、D8の場合、これは少なくともd8.7では機能しません。ダミーモジュールを生成してからアンインストールすることで、以下の解決策をお勧めします。
Marko Blazekovic

3

これで、構成管理モジュールにより、モジュール構成がcore.extension.ymlファイルに保存されます。

ファイルを編集し、ファイルシステムから欠落しているモジュールを見つけて、行を削除して構成をインポートします(drush cim)。

これが機能しないがモジュールを見つけた場合は、モジュールを再度作成し(フォルダーと有効な.info.ymlファイルのみ)、drush cimコマンドを再度実行します。これにより、モジュールがアンインストールされます。


4
これは機能しますが、正しい方法はモジュールを復元してアンインストールすることです。そのモジュールがスキーマや構成などを提供する場合、それはシステムに残り、そうでない場合は手動でクリーンアップする必要があります。
Berdir 2017

1
@Berdirカスタムモジュールが見つからない場合、別のことができますか?
Adrian Cid Almaguer 2017

実際にはそうではありません。上記のように、drush ceditまたはcore.extensionファイルのインポート/エクスポートを使用して手動で行う必要があります。
Berdir 2017

0

私が修正した方法は、drushとcomposerを使用することでした。requireでモジュールを取得し、drushでインストールおよびアンインストールしてから、composerで削除します。

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

とのステップdrush enは必須ではありません

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.