Creé un módulo a través de la Consola Drupal, desafortunadamente no se colocó en una carpeta propia, sino directamente /modules/custom
. Antes de darme cuenta de dónde había ido, habilité el módulo.
En Drupal 6/7, esto fue fácil de solucionar: literalmente pude poner los archivos en la ruta correcta, borrar el caché (tal vez reconstruir el registro, no era una ciencia exacta), y todo estuvo bien.
Lo mismo no es cierto para Drupal 8; Moví los archivos a una subcarpeta, reconstruí el caché, y todas las solicitudes me dicen que Drupal no puede incluir un archivo requerido. El archivo en particular es una clase de bloque, y la ruta que Drupal está tratando de encontrar es donde solía estar, no donde lo he movido.
La parte de la objeción de código está en Symfony's ApcClassLoader
, así que supongo que necesito borrar algo que está ligeramente por encima de la cabeza de Drupal para actualizar esta referencia de ruta.
¿Cómo puedo hacer eso?
Desinstalar y volver a instalar el módulo funciona, pero una vez que haya datos importantes almacenados, no será una opción.
Me equivoqué, desinstalar y reinstalar no es una opción viable. Después de desinstalar y reinstalar, Drupal ya no puede recoger los bloques personalizados que define el módulo. Supongo que la referencia se almacena en caché en algún lugar que no se borra cuando se desinstala el módulo. Solo necesito averiguar dónde está eso y cómo borrarlo ...
ApcClassLoader::findFile()
obteniendo la ruta incorrectaapc_fetch()
o el cargador de clases decorado está devolviendo la ruta incorrecta?Respuestas:
Simplemente reinicie apache. El caché APC se reconstruirá entonces.
También puede intentar presionar rebuild.php o ejecutar drush cr. Todos intentan borrar explícitamente el caché de APC.
fuente
Otra solución se pone en su settings.php:
fuente
Debe borrar el caché de drupal. Así es como se hace con drush:
fuente