Jawaban:
system
Data tabel Drupal 7 sekarang disimpan dalam config
tabel di Drupal 8 terhadap core.extension
parameter.
Solusi 1: Perbarui konfigurasi
Anda dapat menjalankan kode berikut menggunakan drush eval
atau mungkin menggunakan ketentuan modul Devel untuk 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();
Anda dapat melakukan ini semua dalam satu baris cepat 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();"
Solusi 2: Edit tabel konfigurasi jika Anda tidak dapat menjalankan PHP
Jika situs rusak karena modul yang bermasalah dan Anda bahkan tidak dapat menjalankan kode PHP, mungkin Anda dapat mengedit config
tabel secara langsung.
Di baris dalam config
tabel di mana name = "core.extension"
dan edit kolom BLOB data
. Ini data
adalah array PHP berseri tempat Anda harus menghapus modul yang ingin Anda singkirkan dari module
kunci konfigurasi.
Solusi 3: Solusi cepat dan kotor
cache_config
Namun, solusi ini dapat menghasilkan pesan yang mengatakan modul tidak ada dalam sistem file yang berarti ada sesuatu yang salah. Tetapi setidaknya modul yang rusak dinonaktifkan dan Anda dapat mengakses situs Anda dalam sebagian besar kasus.
Membersihkan Cache
Terkadang Anda mungkin harus menghapus cache setelah mengikuti langkah-langkah di atas. Baca dokumentasi praktis ini tentang cara menghapus cache .
drush eval
. Contoh one-liner adalah: 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();
Perhatikan tanda dolar yang lolos sehingga baris perintah tidak salah menafsirkan $module
sebagai variabel Bash.
Melakukan hal ini:
rm -rf modules/your_stubborn_module
rm -rf sites/default/files/php
drush cache-rebuild
juga
config
tabel di mana name = 'core.extension'
dan menghapus modul dari gumpalan data yang merupakan array serial.(...s:6:"module";a:HERE;{...)
cache_config
tabel dari phpmyadmin atau gunakan baris perintah.i:0;s:8:"name of the module";
s:8:"name of the module";i:0;
. Yang dimaksud @valli adalah array yang menggambarkan jumlah modul harus dikurangi jumlahnya dengan jumlah modul yang dihapus. Awal dari gumpalan di setup saya adalah a:4:{s:6:"module";a:59:{
, yang merupakan array dari 59 modul. Jika Anda menghapus dua ubah nilai array menjadi 57.
Pertimbangkan menggunakan Drush. Drupal 8 masih mendefinisikan apa yang dimaksud dengan "menonaktifkan modul". Ada diskusi berkelanjutan jika harus ada pilihan itu atau harus dihapus.
Jika Anda perlu memperbarui sesuatu yang berkaitan dengan konfigurasi Drupal, dalam hal ini core.extension
, gunakan Drush:
[Drush 8.x dalam contoh ini]
drush cedit core.extension
Ada modul untuk itu. Modul ini diposting pada Agustus-2013 di drupal.org . Dalam hal seseorang membutuhkan.
Sebagaimana dinyatakan pada halaman modul ini,
Drupal 8 telah menghapus kemampuan untuk menonaktifkan modul karena berbagai alasan. Lihat # 1199946: Modul yang dinonaktifkan rusak tidak dapat diperbaiki sehingga fungsionalitas "nonaktif" perlu dihapus dan banyak masalah lain dalam antrian berbagai modul inti dan modul kontribusi.
Modul ini mengembalikan kemampuan untuk (sementara) menonaktifkan modul dari UI atau dengan Drush. Perhatikan, bahwa tidak ada jaminan untuk konten Anda, konfigurasi atau bahkan situs Anda setelah Anda menonaktifkan modul.
Begini caranya, saya secara manual menghapus sebuah modul bernama "better_messages" dari instance Drupal 8 saya. Segera setelah saya menginstal modul "better_messages", situs tersebut mati. Jadi tidak ada cara untuk menghapus modul dari antarmuka pengguna. Saya tidak menginstal Drush. Saya telah melakukan banyak pengaturan yang diberikan di forum, tetapi inilah yang akhirnya berhasil bagi saya.
1 Mengganti nama modul menjadi old_better_messages di folder modul.
Melalui url, jalankan http: // IP: port / foldername / rebuild.php . Ini memastikan situs itu kembali, tetapi hanya dalam mode baca-saja. Saya tidak bisa melakukan kegiatan admin atau mengedit artikel.
Digunakan perintah berikut untuk menghapus entri dari database
HAPUS DARI key_value WHERE collection = 'system.schema' AND name = 'better_messages';
Dalam kasus saya, tidak ada entri dalam database. Saya pikir itu mungkin telah dihapus karena berbagai aksi yang saya lakukan sebelumnya.
Ini menyelesaikan masalah. Ini didasarkan pada interpretasi saya tentang https://www.drupal.org/node/2487215
Jawaban Jigarius di atas, semacam berhasil ...
Saya harus: // Baca konfigurasi.
$module_data = \Drupal::config('core.extension')->get()['module'];
Yang harus melakukan hal yang sama. Tidak yakin mengapa itu tidak berhasil seperti yang ditulis Jigarius ...