Bagaimana mengatasi kesalahan "Modul berikut ini hilang dari sistem file"?

9

Saya mendapatkan kesalahan berikut di situs Drupal 8.

Modul berikut tidak ada dari sistem file

Sepertinya modul khusus dipasang dan dihapus tanpa menghapus instalannya.

Bagaimana saya bisa memperbaiki kesalahan ini?

Kevin
sumber
Apakah Anda menggunakan manajemen konfigurasi di situs?
Adrian Cid Almaguer
Ya saya menggunakan itu
Kevin
Beberapa maju dengan masalah? Saya ingin tahu pada akhirnya bagaimana Anda memecahkan masalah, ini bisa sampai saya juga dalam proyek apa pun.
Adrian Cid Almaguer
Dalam Drupal 8.7.3 saya mendapatkan "modul berikut hilang dari sistem file: php di drupal_get_filename ()" tetapi ketika saya mencoba menginstal modul php saya mendapatkan kesalahan tentang hal itu sudah ada pada intinya. Kesalahan ini mencegah saya menghapus instalasi apa pun. Kemarin saya upgrade ke 8.7.3 dan hari ini ke 8.5.3 dan tidak bisa menghilangkan kesalahan. Cache telah dihapus setiap kali dan semua modul yang saya ketahui telah dipulihkan. Saya melihat catatan tentang Drush tetapi bagaimana cara menginstalnya pada 8.7.3?
WilliamK

Jawaban:

11

Jika Anda memiliki Drupal Console maka cara cepat untuk memperbaikinya adalah dengan membuat modul dengan nama mesin yang sama, lalu hapus instalannya.

$ drupal generate:module

Kemudian ketikkan nama mesin pada prompt yang sesuai dan terima default untuk yang lainnya.

$ drush pm-uninstall

Kemudian Anda dapat menghapus modul yang baru dibuat dari sistem file dan melanjutkan hari Anda.

(NB Anda mungkin perlu menyimpan modul yang dibuat itu, jika tidak kesalahan akan kembali. Dalam hal itu, jika Anda perlu menginstal modul contrib dengan nama yang sama, hapus modul yang dihasilkan setelah menambahkan modul contrib. Kemudian kosongkan cache. )

naomi
sumber
2
Ini adalah opsi paling sederhana setelah kueri SQL di atas tidak berfungsi.
Chris Charlton
Ini membantu menyelesaikan kesalahan saya karena modul tidak ditemukan.
Akshay Sawant
Jika ada yang butuh bantuan menginstal Drupal Console, saya menemukan halaman ini bermanfaat. Ingat, Anda ingin menginstal Peluncur Konsol Drupal secara global, DAN Konsol Drupal secara lokal (di root proyek pemasangan Drupal Anda).
Doomd
10

Dengan asumsi Anda telah menghapus modul khusus yang tidak penting yang tidak perlu dipicu secara rutin, Anda dapat menggunakan perintah Drush berikut.

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

Lihat Cara memperbaikinya "Modul berikut ini hilang dari sistem file ..." pesan peringatan untuk info lebih lanjut dan alternatif.

leymannx
sumber
1
Saya mencoba beberapa kali dan ini untuk D8 tidak bekerja setidaknya untuk d8.7. Saya akan merekomendasikan solusi di bawah ini dengan membuat modul dummy dan kemudian menginstalnya.
Marko Blazekovic
3

Sekarang dengan modul Manajemen Konfigurasi, konfigurasi modul disimpan dalam file core.extension.yml.

Pergi untuk mengedit file dan mencoba menemukan modul yang hilang dari sistem file kemudian hapus baris dan impor config ( drush cim).

Jika ini tidak berhasil tetapi Anda telah menemukan modul, lalu buat modul lagi (hanya folder dan file .info.yml yang valid) dan jalankan kembali drush cimperintah. Ini akan menghapus modul.

Adrian Cid Almaguer
sumber
4
Ini berfungsi, tetapi cara yang benar adalah mengembalikan modul dan menghapus instalannya. Jika modul itu menyediakan skema, konfigurasi atau lebih, modul itu akan tetap berada di sistem dan Anda harus membersihkannya secara manual.
Berdir
1
@Berdir jika Anda tidak dapat menemukan modul khusus, kita dapat melakukan hal lain?
Adrian Cid Almaguer
Tidak juga, maka Anda perlu melakukannya secara manual seperti yang disarankan di atas dengan drush cedit atau impor / ekspor dalam file core.extension.
Berdir
0

Cara saya memperbaikinya adalah dengan menggunakan drush dan komposer. Dapatkan modul dengan mengharuskan, instal, dan hapus instalan dengan drush kemudian hapus dengan komposer.

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

! Langkah dengan drush enmungkin tidak perlu

Bo rislav
sumber