Dans Drupal 7, je pouvais modifier manuellement la {system}
table de la base de données pour désactiver un module de sous-programme. Sur mon site Drupal 8, ce tableau a disparu.
Comment désactiver manuellement un module dans Drupal 8?
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:
la source
drush cache-rebuild
aussiconfig
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.la source
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 configurationa: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.Dans Drupal 8, essayez de supprimer le module de votre dossier de modules et exécutez rebuild.php.
Essayez
drush pm-uninstall module-name
aussi.la source
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.
la source
J'ai essayé toutes les autres réponses mais je continuais à recevoir un message d'erreur Drupal. Pour le résoudre, j'ai dû supprimer une ligne de la table key_value (recherchez le nom du module dans la colonne name).
la source
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]
la source
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.
Désactiver les modules
Comme indiqué sur la page de ce module,
la source
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 source
La réponse de Jigarius ci-dessus, en quelque sorte travaillé ...
Je devais: // Lire la configuration.
Ce qui devrait faire la même chose. Je ne sais pas pourquoi cela n'a pas fonctionné comme Jigarius l'a écrit ...
la source