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


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.


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;

-1

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

drush cr

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.