Saya membuat modul melalui Drupal Console, sayangnya itu tidak ditempatkan di folder sendiri, agak langsung ke /modules/custom
. Sebelum saya perhatikan ke mana perginya, saya mengaktifkan modul.
Di Drupal 6/7, ini mudah untuk diperbaiki - saya benar-benar bisa hanya meletakkan file ke jalur yang benar, menghapus cache (mungkin membangun kembali registri, itu bukan ilmu pasti), dan semuanya baik-baik saja.
Hal yang sama tidak berlaku untuk Drupal 8; Saya memindahkan file ke subfolder, membangun kembali cache, dan semua permintaan memberi tahu saya bahwa Drupal gagal menyertakan file yang diperlukan. The file tertentu adalah kelas blok, dan jalan Drupal sedang mencoba untuk menemukan itu adalah di mana ia digunakan untuk menjadi, tidak di mana aku sudah pindah ke.
Sedikit kode objek ada di Symfony ApcClassLoader
, jadi saya kira saya perlu menghapus sesuatu yang sedikit di atas kepala Drupal untuk mendapatkan referensi jalur ini diperbarui.
Bagaimana saya bisa melakukan itu?
Menghapus instalasi dan menginstal ulang modul tidak berfungsi, tetapi begitu ada data penting yang disimpan itu tidak akan menjadi pilihan.
Saya salah, menghapus dan menginstal ulang bukan pilihan yang layak. Setelah menghapus dan menginstal ulang, Drupal tidak lagi dapat mengambil blok kustom yang didefinisikan modul. Saya menduga referensi itu di-cache di suatu tempat yang tidak dihapus ketika modul dihapus. Hanya perlu mencari tahu di mana itu dan bagaimana menjernihkannya ...
ApcClassLoader::findFile()
mendapatkan jalur yang salahapc_fetch()
, atau apakah loader kelas yang dihiasi mengembalikan jalur yang salah?Jawaban:
Mulai ulang apache. Cache APC akan dibangun kembali.
Anda juga dapat mencoba menekan rebuild.php atau menjalankan drush cr. Mereka semua berusaha menghapus cache APC secara eksplisit.
sumber
Solusi lain dimasukkan ke dalam settings.php Anda:
sumber
Anda harus menghapus cache drupal. Begitulah cara melakukannya dengan drush:
sumber