Respuestas:
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 en drush 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:
rm -rf modules/your_stubborn_module
rm -rf sites/default/files/php
drush cache-rebuild
también
config
tabla donde name = '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.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 es a: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.
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.
Si necesita actualizar algo relacionado con la configuración de Drupal, en este caso core.extension
, use Drush:
[Drush 8.x en este ejemplo]
drush cedit core.extension
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.
Como se indica en la página de este módulo,
Drupal 8 ha eliminado la capacidad de deshabilitar módulos por muchas razones. Consulte # 1199946: los módulos deshabilitados se rompen sin posibilidad de reparación, por lo que es necesario eliminar la funcionalidad de "deshabilitar" y muchos otros problemas en la cola de varios módulos principales y contribuidos.
Este módulo recupera la capacidad de deshabilitar (temporalmente) los módulos desde la interfaz de usuario o con Drush. Tenga en cuenta que no hay garantía para su contenido, configuración o incluso su sitio después de deshabilitar un módulo.
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
La respuesta de Jigarius arriba, más o menos funcionó ...
Tuve que: // Leer la configuración.
$module_data = \Drupal::config('core.extension')->get()['module'];
Que debería hacer lo mismo. No estoy seguro de por qué no funcionó como lo escribió Jigarius ...