He estado buscando las respuestas a esta pregunta sin suerte en absoluto. Por lo que observo en la estructura de la base de datos, la ubicación de los módulos se especifica en la tabla 'sistema'. La única solución que tengo es escribir una consulta SQL para actualizar la columna 'nombre de archivo'.
¿Existe una solución mejor / más limpia para resolver esto, por ejemplo, un módulo contrib?
fuente
registry_file
tabla, lo que obligará a drupal a volver a escanear todos los archivos y reconstruir la tabla.DELETE FROM registry_file;
y agregué una llamada arebuild_registry()
mipage.tpl.php
.Restablecí una copia de seguridad de la producción local e intenté simplemente mover cosas y presionar admin / modules o ejecutar register_rebuild () pero no impidió que se produjeran errores fatales. Esto tiene sentido para mí, ya que algunos módulos pueden usar incluir o lo que sea en su hook_init (), o puede tener una ruta de enrutador de menú establecida que depende de un módulo o incluir que Drupal no puede encontrar en bootstrap. En última instancia, esto es lo que hice (tus caminos pueden ser diferentes):
Paso 1: Reemplazar sitios / todos / módulos con sitios / todos / módulos / contrib
Paso 2: Reemplace sites / all / modules / contrib con sites / all / modules / custom por módulos de espacios de nombres personalizados
Paso 3: Mueva los módulos de desarrollo a sitios / todos / módulos / dev
Paso 4: borra los cachés para que las cosas arranquen correctamente
Nota: Si usa un módulo personalizado o una contribución como LoginToboggan para manejar 403 (acceso denegado) y ha cerrado la sesión durante este proceso, es posible que deba actualizar la
include_file
columna en lamenu_roter
tabla para usar la nueva ruta para el archivo de inclusión . Esto es probablemente una ocurrencia rara.UPDATE menu_router SET include_file = 'sites/all/modules/custom/my_custom_namespace/includes/foo.inc' WHERE path = 'access-denied'
Una vez que se hayan ejecutado estas consultas, lo que solo tomará una fracción de segundo, presione admin / config / development / performance y borre la memoria caché para que se reconstruyan las rutas del menú.
fuente
update menu_router set include_file = 'sites/all/modules/contrib/logintoboggan/logintoboggan.admin.inc' WHERE path = 'admin/config/system/logintoboggan'; update menu_router set include_file = 'sites/all/modules/contrib/logintoboggan/logintoboggan.validation.inc' WHERE path = 'toboggan/revalidate/%'; update menu_router set include_file = 'sites/all/modules/contrib/logintoboggan/logintoboggan.validation.inc' WHERE path = 'user/validate/%/%/%';
Pruebe la herramienta genial de Mark Sonnabaum: Drush Rebuild Project Paths . Automatiza el proceso; funcionó muy bien para mí Utiliza Drush , por supuesto.
Sin embargo, haré una segunda sugerencia para que pruebes esto en una copia de la base de datos de tu sitio.
fuente
Para el registro, hay un gran comando drush para reconstruir el registro: http://drupal.org/project/registry_rebuild
Hay mucha información en la página del proyecto.
fuente
sites/all/modules
que había quecontrib
moverlos al subdirectorio. Todo lo que tenía que hacer eradrush dl registry_rebuild; mv OLD_PATH/module NEW_PATH/module; drush rr
drush rr --fire-bazooka
conduce a errores, perodrush rr
está bien.En primer lugar, siempre haga una copia de seguridad de su base de datos, por lo que es muy fácil hacerlo si algo sale mal y no hizo una copia de seguridad.
No estoy seguro si importa si deshabilita los módulos o no; es posible que desee hacerlo, por si acaso. Entonces haz esto:
¡Todo listo! Drupal volverá a buscar todos los módulos instalados.
fuente
¿Por qué no prueba el módulo Reconstruir registro ? Funcionó todo el tiempo para mí.
Aquí hay una cita al respecto (de la página del proyecto del módulo):
fuente
Puede usar el módulo de Reconstrucción de registro , que se integra con Drush a través del
Drush RR
comando.Básicamente lo que haces son estos pasos:
Lo aprendí / descubrí por primera vez a través de DrupalEasy Podcast # 133 , que explica además cómo se puede usar este módulo / drush cmd.
PD: Por supuesto, primero realice una copia de seguridad de su sitio ...
fuente
Visite / admin / build / modules reconstruirá las rutas en la tabla del sistema. A veces, drupal ya no puede arrancar, por lo que esta solución no funciona en este caso. Si no funciona, puede usar Drush Rebuild Project Paths como se dijo en una respuesta anterior. Sin embargo, debe agregar el nuevo comando drush antes de romper el bootstrap. Para agregar el nuevo comando, consulte la sección COMANDOS del archivo Léame
fuente
Tuve algunos problemas para
drush dl
no funcionar debido a los problemas del directorio del módulo. En general, me gustan las respuestas de la pila que simplemente puedo pegar para que todo funcione. Aquí encontrará un par de líneas que instalarán Drush Rebuild Registry y lo ejecutarán en su sitio si ya está en el directorio del sitio adecuado.fuente
No estoy 100% seguro de una verdadera respuesta de drupal-esk, pero en mi experiencia:
Accidentalmente moví una de mis carpetas de módulos personalizados a otra carpeta de módulos personalizados cuando envié FTP al servidor. Ambos seguían trabajando. Drupal parecía haberlo reconocido como un módulo separado incluso mientras estaba en la carpeta de otro módulo. No tuve que deshabilitar el módulo.
** Este módulo que moví NO tenía un archivo .install, así que no estoy seguro de si eso importa.
fuente
Las distribuciones de Drupal no manejan esto bien, por lo que recientemente, después de terminar accidentalmente con una copia de Entity API en
sites/all/
un sitio de Panopoly, nada de esto funcionó. La reconstrucción del registro, la carga de la página de módulos y todo lo demás causó un error fatal.Deshabilitar el módulo tampoco es simple si tiene que mover algo como Entity API, que es requerido por toneladas de otros módulos en Panopoly.
Para resolver esto, para Entity API haría algo como esto:
Actualice la ruta en la tabla del sistema:
Luego reconstruya el registro:
fuente
Drupal 7
En primer lugar, inténtalo
drush rr
.Si no funciona, después de mover los archivos, pruebe los siguientes comandos Drush en su directorio raíz de Drupal:
Si lo anterior no funciona, busque la tabla que todavía tiene la información anterior sobre la ruta:
Si no se encuentra ninguno, eso significa que es su caché externa.
Si es así, no olvide reiniciarlos, por ejemplo:
Ver más: ¿Qué método se utiliza para borrar cachés en Drupal?
Alternativamente, puede probar las siguientes consultas MySQL después de mover los archivos:
fuente
Se recomienda mover sus módulos a subcarpetas contrib / dev / patched / custom. Sin embargo, no hay ganancias de rendimiento, esto se hace por razones prácticas y estéticas. Esto facilitará la vida de los futuros desarrolladores.
Puede mover la mayoría de los módulos contrib a subcarpetas sin problemas en un sitio en vivo. Debe limpiar los cachés después. Si no utiliza drush y descubre que ya no puede acceder a la página de limpieza de caché, deberá visitar /update.php o truncar manualmente las tablas de caché. Solo tuve que hacer el último bit al mover el módulo API de la entidad.
Mover módulos principales es técnicamente posible, pero no lo recomendaría ni veo ninguna razón válida para hacerlo.
Actualización: Mover módulos como la API de entidad puede requerir la reconstrucción del registro. Echa un vistazo a la página Registry_rebuild .
fuente
Simplemente puede agregar un enlace sym en el directorio de sites / all / modules apuntando a sites / all / contrib. No estoy seguro si resuelve tu problema. También hay otras soluciones, incluido el perfil de instalación o un archivo de creación drush. No sé lo suficiente como para proporcionar detalles sobre ellos, pero al menos es una dirección que puede mirar.
fuente