回答:
Drupal 7のsystem
テーブルデータはconfig
、core.extension
パラメーターに対してDrupal 8 のテーブルに保存されるようになりました。
解決策1:構成を更新する
drush eval
を使用して、またはDevelモジュールのプロビジョニングを使用して、次のコードを実行できます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();
これはすべて、簡単なワンライナーで行うことができます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();"
解決策2:PHPを実行できない場合の構成テーブルの編集
問題のあるモジュールが原因でサイトが壊れていて、PHPコードを実行することさえできない場合、config
テーブルを直接編集できる可能性があります。
config
テーブル内の行でname = "core.extension"
、BLOB列を編集しますdata
。data
あなたがからを取り除きたいモジュール削除する必要がシリアライズされたPHPの配列であるmodule
設定のキーを。
解決策3:高速でダーティなソリューション
cache_config
ただし、このソリューションでは、モジュールがファイルシステムに存在しないというメッセージが表示され、何かが間違っていることを意味する場合があります。ただし、少なくとも破損したモジュールは無効になり、ほとんどの場合、サイトにアクセスできます。
キャッシュをクリアする
上記の手順を実行した後、キャッシュをクリアする必要がある場合があります。キャッシュをクリアする方法に関するこの便利なドキュメントをお読みください。
drush eval
。1行の例は次のとおりです。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();
コマンドラインが$module
Bash変数と誤解されないように、エスケープされたドル記号に注意してください。
config
テーブルを手動で編集しname = 'core.extension'
、シリアル化された配列であるデータBLOBからモジュールを削除します。(...s:6:"module";a:HERE;{...)
cache_config
phpmyadminから、またはコマンドラインを使用してテーブルを切り捨てます。i:0;s:8:"name of the module";
s:8:"name of the module";i:0;
です。@valliが意味したことは、モジュールの数を記述する配列は、削除されたモジュールの数だけ数を減らす必要があるということでした。私のセットアップでのblobの始まりは、a:4:{s:6:"module";a:59:{
59個のモジュールの配列です。2つの配列を削除すると、その配列の値が57に変更されます
Drushの使用を検討してください。Drupal 8は、「モジュールを無効にする」ことを定義しています。そのオプションがある場合、または削除する必要がある場合は、継続的な議論があります。
そのためのモジュールがあります。このモジュールは2013年8月にdrupal.orgに投稿されました。誰かが必要な場合に。
このモジュールのページに記載されているように、
Drupal 8では、多くの理由でモジュールを無効にする機能が削除されました。 #1199946を参照してください:無効なモジュールは修復できないほど壊れているため、「無効」機能を削除する必要があります。また、さまざまなコアおよび提供モジュールのキューにある他の多くの問題。
このモジュールは、UIまたはDrushから(一時的に)モジュールを無効にする機能を復活させます。モジュールを無効にした後は、コンテンツ、構成、またはサイトさえ保証されないことに注意してください。
これは、Drupal 8インスタンスから「better_messages」という名前のモジュールを手動で削除した方法です。「better_messages」モジュールをインストールするとすぐに、サイトがダウンしました。そのため、ユーザーインターフェイスからモジュールをアンインストールする方法はありませんでした。Drushをインストールしていません。私はフォーラムで与えられた多くの設定を行いましたが、これは最終的に私のために働いた方法です。
1モジュールの名前を、modulesフォルダーのold_better_messagesに変更しました。
URLを介して、http:// IP:port / foldername / rebuild.phpを実行しました。これにより、サイトは確実に復帰しますが、読み取り専用モードのみです。管理活動を行ったり、記事を編集したりできませんでした。
次のコマンドを使用して、データベースからエントリを削除します
DELETE FROM key_value WHERE collection = 'system.schema' AND name = 'better_messages';
私の場合、データベースにエントリはありませんでした。以前に行ったさまざまなスタントが原因で、削除された可能性があると思います。
これで問題は解決しました。これは、https://www.drupal.org/node/2487215の私の解釈に基づいています
上記のジガリウスの答え、ある種の作業...
私はしなければなりませんでした://設定を読みます。
$module_data = \Drupal::config('core.extension')->get()['module'];
どの必要があり、同じことを行います。ジガリウスが書いたようになぜ機能しなかったのかは分かりません...