No Drupal 7, eu poderia editar manualmente a {system}
tabela no banco de dados para desativar um módulo stubbon. No meu site Drupal 8, essa tabela se foi.
Como posso desativar manualmente um módulo no Drupal 8?
Os system
dados da tabela Drupal 7 agora são armazenados na config
tabela no Drupal 8 no core.extension
parâmetro.
Solução 1: atualizar configuração
Você pode executar o código a seguir usando drush eval
ou pode estar usando a provisão do 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();
Você pode fazer isso tudo de uma só vez com um 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();"
Solução 2: edite a tabela de configuração se você não puder executar o PHP
Se o site estiver com problemas por causa do módulo problemático e você nem conseguir executar o código PHP, poderá editar a config
tabela diretamente.
Na linha da config
tabela em que name = "core.extension"
e edite a coluna BLOB data
. O data
é um array PHP serializado em que é necessário remover o módulo do qual você deseja se livrar da module
chave da configuração.
Solução 3: Solução rápida e suja
cache_config
No entanto, essa solução pode resultar em mensagens informando que o módulo não existe no sistema de arquivos, o que significa que algo está errado. Mas pelo menos o módulo quebrado é desativado e você pode acessar o site na maioria dos casos.
Limpando o cache
Às vezes, você pode precisar limpar o cache depois de seguir as etapas acima. Leia esta documentação útil sobre como limpar o cache .
drush eval
. Um exemplo de uma linha é: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();
Observe o sinal de dólar escapado para que a linha de comando não interprete mal$module
como uma variável Bash.Fazem isto:
fonte
drush cache-rebuild
também #config
tabela ondename = 'core.extension'
e remova o módulo do blob de dados que é uma matriz serializada.(...s:6:"module";a:HERE;{...)
cache_config
tabela do phpmyadmin ou use a linha de comando.fonte
i:0;s:8:"name of the module";
s:8:"name of the module";i:0;
. O que @valli significava era que a matriz que descreve o número de módulos deve ser diminuída em número pela quantidade de módulos removidos. O início do blob na minha configuração éa:4:{s:6:"module";a:59:{
, que é uma matriz de 59 módulos. Se você excluir duas mudanças que o valor matriz para 57.Considere usar Drush. O Drupal 8 ainda está definindo o que "módulos desativadores" devem ser. Há uma discussão em andamento se deve haver essa opção ou ela deve ser removida.
fonte
No Drupal 8, tente remover o módulo da pasta do módulo e execute rebuild.php.
Tente
drush pm-uninstall module-name
também.fonte
Tentei todas as outras respostas, mas continuava recebendo uma mensagem de erro drupal. Para resolvê-lo, tive que remover uma linha da tabela key_value (procure o nome do módulo na coluna name)
fonte
Se você precisar atualizar algo relacionado à configuração do Drupal, neste caso
core.extension
, use Drush:[Drush 8.x neste exemplo]
fonte
Existe um módulo para isso. Este módulo foi publicado em agosto de 2013 em drupal.org . Caso alguém precise.
Desativar módulos
Conforme indicado na página deste módulo,
fonte
Foi assim que eu removi manualmente um módulo chamado "better_messages" da minha instância do Drupal 8. Assim que instalei o módulo "better_messages", o site caiu no ar. Portanto, não havia como desinstalar o módulo da interface do usuário. Eu não tenho Drush instalado. Fiz muitas configurações nos fóruns, mas foi assim que finalmente funcionou para mim.
1 Renomeie o módulo para old_better_messages na pasta modules.
Por meio do URL, execute http: // IP: port / foldername / rebuild.php . Isso garantiu que o site voltasse, mas apenas no modo somente leitura. Não pude fazer as atividades administrativas ou editar artigos.
Utilizado após o comando para excluir a entrada do banco de dados
DELETE FROM key_value WHERE coleção = 'system.schema' AND name = 'better_messages';
No meu caso, não houve entrada no banco de dados. Eu acho que pode ter sido excluído por causa das várias cenas de ação que eu fiz anteriormente.
Isso resolveu o problema. Isso é baseado na minha interpretação de https://www.drupal.org/node/2487215
fonte
A resposta de Jigarius acima, meio que funcionou ...
Eu tive que: // Ler a configuração.
O que deve fazer a mesma coisa. Não sei por que não funcionou como Jigarius escreveu ...
fonte