Réponses:
Les system
données de la table Drupal 7 sont maintenant stockées dans la config
table dans Drupal 8 par rapport au core.extension
paramètre.
Solution 1: mettre à jour la configuration
Vous pouvez exécuter le code suivant en utilisant drush eval
ou en utilisant éventuellement la provision du module Devel 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();
Vous pouvez faire tout cela en une ligne rapide avec 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();"
Solution 2: modifiez la table de configuration si vous ne pouvez pas exécuter PHP
Si le site est endommagé à cause du module problématique et que vous ne pouvez même pas exécuter de code PHP, vous pouvez peut-être modifier config
directement le tableau.
Dans la ligne de la config
table où name = "core.extension"
et éditez la colonne BLOB data
. Il data
s'agit d'un tableau PHP sérialisé dans lequel vous devez supprimer le module dont vous souhaitez vous débarrasser de la module
clé de la configuration.
Solution 3: solution rapide et sale
cache_config
Cependant, cette solution peut générer des messages indiquant que le module n'existe pas dans le système de fichiers, ce qui signifie que quelque chose ne va pas. Mais au moins le module défectueux est désactivé et vous pouvez accéder à votre site dans la plupart des cas.
Effacer le cache
Parfois, vous devrez peut-être effacer le cache après avoir suivi les étapes ci-dessus. Lisez cette documentation pratique sur la suppression du cache .
drush eval
. Par exemple, une ligne est la suivante: 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();
Notez le signe dollar échappé afin que la ligne de commande ne soit pas interprétée de $module
manière erronée comme une variable Bash.
Faire ceci:
rm -rf modules/your_stubborn_module
rm -rf sites/default/files/php
drush cache-rebuild
aussi
config
table où name = 'core.extension'
et supprimez le module du blob de données qui est un tableau sérialisé.(...s:6:"module";a:HERE;{...)
cache_config
table depuis phpmyadmin ou en utilisant la ligne de commande.i:0;s:8:"name of the module";
s:8:"name of the module";i:0;
: Ce que @valli voulait dire, c’est que le tableau décrivant le nombre de modules devrait être décrémenté en nombre par la quantité de modules supprimés. Le début du blob dans ma configuration a:4:{s:6:"module";a:59:{
est un tableau de 59 modules. Si vous en supprimez deux, changez la valeur de ce tableau en 57.
Pensez à utiliser Drush. Drupal 8 définit toujours ce que devraient être les "modules de désactivation". Une discussion est en cours pour savoir si cette option devrait exister ou si elle devrait être supprimée.
Si vous devez mettre à jour quelque chose lié à la configuration de Drupal core.extension
, utilisez Drush dans ce cas :
[Drush 8.x dans cet exemple]
drush cedit core.extension
Il y a un module pour ça. Ce module a été publié en août 2013 sur drupal.org . Au cas où quelqu'un aurait besoin.
Comme indiqué sur la page de ce module,
Drupal 8 a supprimé la possibilité de désactiver les modules pour plusieurs raisons. Voir # 1199946: Les modules désactivés sont irréparables. La fonctionnalité "Désactiver" doit donc être supprimée et de nombreux autres problèmes doivent figurer dans la file d'attente de divers modules principaux et contribués.
Ce module permet de désactiver (temporairement) des modules à partir de l'interface utilisateur ou avec Drush. Notez qu'il n'y a aucune garantie pour votre contenu, votre configuration ou même votre site après la désactivation d'un module.
C'est ainsi que j'ai manuellement supprimé un module nommé "better_messages" de mon instance Drupal 8. Dès que j'ai installé le module "better_messages", le site s'est effondré. Il n'y avait donc aucun moyen de désinstaller le module à partir de l'interface utilisateur. Je n'ai pas installé Drush. J'ai effectué de nombreux réglages dans les forums, mais c'est ainsi que cela a finalement fonctionné pour moi.
1 a renommé le module old_better_messages dans le dossier modules.
Par le biais de l'URL, http: // IP: port / nom_dossier / rebuild.php . Cela garantissait le retour du site, mais uniquement en mode lecture seule. Je ne pouvais pas faire les activités administratives ni éditer des articles.
Utilisé la commande suivante pour supprimer l'entrée de la base de données
DELETE FROM key_value WHERE collection = 'system.schema' AND name = 'better_messages';
Dans mon cas, il n'y avait aucune entrée dans la base de données. Je pense qu'il a peut-être été supprimé à cause des différentes cascades que j'ai faites plus tôt.
Cela a résolu le problème. Ceci est basé sur mon interprétation de https://www.drupal.org/node/2487215
La réponse de Jigarius ci-dessus, en quelque sorte travaillé ...
Je devais: // Lire la configuration.
$module_data = \Drupal::config('core.extension')->get()['module'];
Ce qui devrait faire la même chose. Je ne sais pas pourquoi cela n'a pas fonctionné comme Jigarius l'a écrit ...