Bagaimana saya bisa memindahkan modul dengan aman ke folder lain?

7

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 ...

Clive
sumber
Jadi, jika Anda membuat first.module dan second.module dengan Drupal Console, apakah Anda menemukan kedua file tersebut di / modules / custom? Saya tidak akan pernah membuat modul dengan itu, kalau begitu.
kiamlaluno
Saya memiliki @kiamlaluno versi lama, ditingkatkan sekarang dan masalah itu tidak ada. Masalah dalam pertanyaan yang paling pasti adalah, sebenarnya semakin buruk. Aku baru saja menambahkan merek modul baru, dengan blok baru, dan Drupal sekarang tidak akan mengambil bahwa blok untuk halaman admin. Ada sesuatu yang benar-benar kacau di dalam konfigurasinya, tetapi saya tidak tahu harus mencarinya ke mana: /
Clive
Apakah ApcClassLoader::findFile()mendapatkan jalur yang salah apc_fetch(), atau apakah loader kelas yang dihiasi mengembalikan jalur yang salah?
gapple

Jawaban:

11

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.

Berdir
sumber
Ya saya melakukan hal yang sama (nginx + fpm tetapi restart beberapa kali), ditambah menjalankan apc_flush_cache secara langsung dan bahkan beralih antara php5 dan 7 toko yang sama sekali berbeda, masih melihat masalah tapi saya menduga itu adalah sesuatu dengan pengaturan saya secara khusus, logika kata salah satu metode itu akan memperbaikinya. akan melihat lebih dekat besok
Clive
Waktu malam tampaknya telah memperbaikinya jadi saya akan menaruh pin di ini untuk saat ini ...
Clive
rebuild.php (browser terbuka) membantu, memulai ulang apache dan menghapus cache tidak membantu.
drupalfan
Saya melakukan cache dengan jelas, jalankan rebuild.php, apache restart. Masih tidak berfungsi mendapatkan kesalahan yang sama. Blok merujuk jalur modul lama.
ARUN
0

Solusi lain dimasukkan ke dalam settings.php Anda:

 /**
 * Class Loader.
 *
 * If the APC extension is detected, the Symfony APC class loader is used for
 * performance reasons. Detection can be prevented by setting
 * class_loader_auto_detect to false, as in the example below.
 */
$settings['class_loader_auto_detect'] = FALSE;
rpayanm
sumber
-1

Anda harus menghapus cache drupal. Begitulah cara melakukannya dengan drush:

drush cr
Somalia
sumber
Kita berbicara di sini tentang Drupal 8, ini di atas berfungsi untuk drupal 7.
Marko Blazekovic
Terima kasih Marko, telah memperbarui jawaban saya untuk solusi drupal 8.
Somerusia