Di Drupal 7, saya bisa secara manual mengedit {system}
tabel dalam database untuk menonaktifkan modul stubbon. Di situs Drupal 8 saya, tabel ini hilang.
Bagaimana saya bisa menonaktifkan modul secara manual di Drupal 8?
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:
sumber
drush cache-rebuild
jugaconfig
tabel di mananame = '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.sumber
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 adalaha:4:{s:6:"module";a:59:{
, yang merupakan array dari 59 modul. Jika Anda menghapus dua ubah nilai array menjadi 57.Di Drupal 8, cobalah untuk menghapus modul dari folder modul Anda dan jalankan rebuild.php.
Coba
drush pm-uninstall module-name
juga.sumber
Pertimbangkan menggunakan Drush. Drupal 8 masih mendefinisikan apa yang dimaksud dengan "menonaktifkan modul". Ada diskusi berkelanjutan jika harus ada pilihan itu atau harus dihapus.
sumber
Saya mencoba semua jawaban lain tetapi terus mendapatkan pesan kesalahan drupal. Untuk mengatasinya saya harus menghapus baris dari tabel key_value (mencari nama modul di kolom nama)
sumber
Jika Anda perlu memperbarui sesuatu yang berkaitan dengan konfigurasi Drupal, dalam hal ini
core.extension
, gunakan Drush:[Drush 8.x dalam contoh ini]
sumber
Ada modul untuk itu. Modul ini diposting pada Agustus-2013 di drupal.org . Dalam hal seseorang membutuhkan.
Nonaktifkan modul
Sebagaimana dinyatakan pada halaman modul ini,
sumber
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
sumber
Jawaban Jigarius di atas, semacam berhasil ...
Saya harus: // Baca konfigurasi.
Yang harus melakukan hal yang sama. Tidak yakin mengapa itu tidak berhasil seperti yang ditulis Jigarius ...
sumber