En Drupal 7, podría editar manualmente la {system}
tabla en la base de datos para deshabilitar un módulo stubbon. En mi sitio Drupal 8, esta tabla se ha ido.
¿Cómo puedo desactivar manualmente un módulo en Drupal 8?
Los system
datos de la tabla Drupal 7 ahora se almacenan en la config
tabla en Drupal 8 contra el core.extension
parámetro.
Solución 1: actualizar la configuración
Puede ejecutar el siguiente código usando drush eval
o puede estar usando la provisión del módulo Devel para Execute PHP Code
.
// Read the configuration.
$module_data = \Drupal::config('core.extension')->get('module');
// Unset the modules you do not need.
unset($module_data['MODULE_NAME']);
// Write the configuration.
\Drupal::configFactory()->getEditable('core.extension')->set('module', $module_data)->save();
Puede hacer todo esto en una línea rápida con drush
.
drush eval "\$module_data = \Drupal::config('core.extension')->get('module'); unset(\$module_data['MODULE_NAME']); \Drupal::configFactory()->getEditable('core.extension')->set('module', \$module_data)->save();"
Solución 2: edite la tabla de configuración si no puede ejecutar PHP
Si el sitio está roto debido al módulo problemático y ni siquiera puede ejecutar el código PHP, entonces puede editar la config
tabla directamente.
En la fila de la config
tabla donde name = "core.extension"
y edite la columna BLOB data
. Se data
trata de una matriz PHP serializada donde debe eliminar el módulo del que desea deshacerse de la module
clave de la configuración.
Solución 3: solución rápida y sucia
cache_config
Sin embargo, esta solución podría generar mensajes que indiquen que el módulo no existe en el sistema de archivos, lo que significa que algo está mal. Pero al menos el módulo roto se deshabilita y puede acceder a su sitio en la mayoría de los casos.
Borrar caché
A veces puede que tenga que borrar el caché después de seguir los pasos anteriores. Lea esta práctica documentación sobre cómo borrar el caché .
drush eval
. Un ejemplo de una línea es: tenga endrush eval "\$module_data = \Drupal::config('core.extension')->get('module'); unset(\$module_data['example_module']); \Drupal::configFactory()->getEditable('core.extension')->set('module', \$module_data)->save();
cuenta el signo de dólar escapado para que la línea de comando no se malinterprete$module
como una variable Bash.Hacer esto:
fuente
drush cache-rebuild
tambiénconfig
tabla dondename = 'core.extension'
y elimine el módulo del blob de datos que es una matriz serializada.(...s:6:"module";a:HERE;{...)
cache_config
tabla de phpmyadmin o usando la línea de comandos.fuente
i:0;s:8:"name of the module";
s:8:"name of the module";i:0;
. Lo que @valli quiso decir fue que la matriz que describe el número de módulos debe disminuir en número por la cantidad de módulos eliminados. El comienzo del blob en mi configuración esa:4:{s:6:"module";a:59:{
, que es una matriz de 59 módulos. Si elimina dos, cambie el valor de la matriz a 57.En Drupal 8, intente eliminar el módulo de la carpeta de su módulo y ejecute rebuild.php.
Inténtalo
drush pm-uninstall module-name
también.fuente
Considera usar Drush. Drupal 8 todavía está definiendo qué deberían ser los "módulos de desactivación". Hay una discusión en curso si debería existir esa opción o si debería eliminarse.
fuente
Intenté todas las otras respuestas pero seguí recibiendo un mensaje de error de drupal. Para resolverlo, tuve que eliminar una fila de la tabla key_value (busque el nombre del módulo en la columna de nombre)
fuente
Si necesita actualizar algo relacionado con la configuración de Drupal, en este caso
core.extension
, use Drush:[Drush 8.x en este ejemplo]
fuente
Hay un módulo para eso. Este módulo fue publicado en agosto de 2013 en drupal.org . En caso de que alguien lo necesite.
Deshabilitar módulos
Como se indica en la página de este módulo,
fuente
Así es como, manualmente eliminé un módulo llamado "better_messages" de mi instancia de Drupal 8. Tan pronto como instalé el módulo "better_messages", el sitio se cayó. Por lo tanto, no había forma de desinstalar el módulo de la interfaz de usuario. No tengo instalado Drush. He realizado muchas configuraciones en los foros, pero así es como finalmente funcionó para mí.
1 Cambió el nombre del módulo a old_better_messages en la carpeta de módulos.
A través de la url, ejecutó http: // IP: port / foldername / rebuild.php . Esto aseguró que el sitio esté de regreso, pero solo en modo de solo lectura. No pude hacer las actividades administrativas o editar artículos.
Se utiliza el siguiente comando para eliminar la entrada de la base de datos
ELIMINAR DE key_value WHERE colección = 'system.schema' AND name = 'better_messages';
En mi caso, no había entrada en la base de datos. Creo que podría haberse eliminado debido a las diversas acrobacias que hice antes.
Esto resolvió el problema. Esto se basa en mi interpretación de https://www.drupal.org/node/2487215
fuente
La respuesta de Jigarius arriba, más o menos funcionó ...
Tuve que: // Leer la configuración.
Que debería hacer lo mismo. No estoy seguro de por qué no funcionó como lo escribió Jigarius ...
fuente