Respostas:
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:
rm -rf modules/your_stubborn_module
rm -rf sites/default/files/php
drush cache-rebuild
também #
config
tabela onde name = '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.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.
Se você precisar atualizar algo relacionado à configuração do Drupal, neste caso core.extension
, use Drush:
[Drush 8.x neste exemplo]
drush cedit core.extension
Existe um módulo para isso. Este módulo foi publicado em agosto de 2013 em drupal.org . Caso alguém precise.
Conforme indicado na página deste módulo,
O Drupal 8 removeu a capacidade de desativar os módulos por vários motivos. Consulte o n.º 1199946: Os módulos desativados estão quebrados além do reparo, portanto, a funcionalidade "desativar" precisa ser removida e muitos outros problemas na fila de vários módulos principais e contribuídos.
Este módulo traz de volta a capacidade de (temporariamente) desativar os módulos da interface do usuário ou com o Drush. Observe que não há garantia para o seu conteúdo, configuração ou até mesmo o seu site depois de desativar um módulo.
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
A resposta de Jigarius acima, meio que funcionou ...
Eu tive que: // Ler a configuração.
$module_data = \Drupal::config('core.extension')->get()['module'];
O que deve fazer a mesma coisa. Não sei por que não funcionou como Jigarius escreveu ...