Risposte:
I systemdati della tabella Drupal 7 sono ora memorizzati nella configtabella in Drupal 8 rispetto al core.extensionparametro.
Soluzione 1: aggiorna la configurazione
È possibile eseguire il codice seguente utilizzando drush evalo potrebbe utilizzare la disposizione del modulo Devel su 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();
Puoi farlo tutto in una sola riga 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();"
Soluzione 2: modificare la tabella di configurazione se non è possibile eseguire PHP
Se il sito è rotto a causa del modulo problematico e non puoi nemmeno eseguire il codice PHP, allora puoi modificare configdirettamente la tabella.
Nella riga della configtabella in cui name = "core.extension"e modifica la colonna BLOB data. Si datatratta di un array PHP serializzato in cui è necessario rimuovere il modulo che si desidera eliminare dalla modulechiave della configurazione.
Soluzione 3: soluzione veloce e sporca
cache_configTuttavia, questa soluzione potrebbe comportare messaggi che indicano che il modulo non esiste nel file system, il che significa che qualcosa non va. Ma almeno il modulo rotto viene disabilitato e puoi accedere al tuo sito nella maggior parte dei casi.
Svuotare la cache
A volte potrebbe essere necessario svuotare la cache dopo aver seguito i passaggi precedenti. Leggi questa pratica documentazione su come svuotare la cache .
drush eval. Un esempio di una 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();riga è: nota il simbolo del dollaro con escape in modo che la riga di comando non venga interpretata erroneamente $modulecome una variabile Bash.
Fai questo:
rm -rf modules/your_stubborn_module
rm -rf sites/default/files/php
drush cache-rebuildanche tu
configtabella in cui name = 'core.extension'e rimuovere il modulo dal BLOB di dati che è un array serializzato.(...s:6:"module";a:HERE;{...)cache_configtabella da phpmyadmin o usando la riga di comando.i:0;s:8:"name of the module";
s:8:"name of the module";i:0;. Il significato di @valli era che l'array che descriveva il numero di moduli doveva essere ridotto in numero in base alla quantità di moduli rimossi. L'inizio del BLOB nella mia configurazione è a:4:{s:6:"module";a:59:{, che è un array di 59 moduli. Se ne elimini due, modifica quel valore di array in 57.
Prendi in considerazione l'utilizzo di Drush. Drupal 8 sta ancora definendo quali "moduli di disabilitazione" dovrebbero essere. C'è una discussione in corso se ci dovrebbe essere quell'opzione o dovrebbe essere rimossa.
Se devi aggiornare qualcosa relativo alla configurazione di Drupal, in questo caso core.extensionusa Drush:
[Drush 8.x in questo esempio]
drush cedit core.extension
C'è un modulo per quello. Questo modulo è stato pubblicato nell'agosto 2013 su drupal.org . Nel caso qualcuno ne abbia bisogno.
Come indicato nella pagina di questo modulo,
Drupal 8 ha rimosso la possibilità di disabilitare i moduli per molte ragioni. Vedi # 1199946: I moduli disabilitati sono rotti irreparabilmente, quindi la funzionalità "disabilita" deve essere rimossa e molti altri problemi nella coda di vari moduli core e forniti.
Questo modulo riporta la possibilità di disabilitare (temporaneamente) i moduli dall'interfaccia utente o con Drush. Nota che non hai alcuna garanzia per i tuoi contenuti, la tua configurazione o anche il tuo sito dopo aver disabilitato un modulo.
È così che ho rimosso manualmente un modulo chiamato "better_messages" dalla mia istanza di Drupal 8. Non appena ho installato il modulo "better_messages", il sito è andato in crash. Quindi non c'era modo di disinstallare il modulo dall'interfaccia utente. Non ho installato Drush. Ho fatto molte impostazioni fornite nei forum, ma è così che alla fine ha funzionato per me.
1 Rinominato il modulo in old_better_messages nella cartella dei moduli.
Attraverso l'URL, ha eseguito http: // IP: port / foldername / rebuild.php . Ciò ha assicurato che il sito è tornato, ma solo in modalità di sola lettura. Non ho potuto svolgere le attività di amministrazione o modificare articoli.
Utilizzato il seguente comando per eliminare la voce dal database
DELETE FROM key_value WHERE collection = 'system.schema' AND name = 'better_messages';
Nel mio caso, non vi era alcuna voce nel database. Penso che potrebbe essere stato eliminato a causa delle varie acrobazie che ho fatto in precedenza.
Questo ha risolto il problema. Questo si basa sulla mia interpretazione di https://www.drupal.org/node/2487215
La risposta di Jigarius sopra, ha funzionato ...
Ho dovuto: // Leggere la configurazione.
$module_data = \Drupal::config('core.extension')->get()['module'];
Che dovrebbe fare la stessa cosa. Non sono sicuro del motivo per cui non ha funzionato come Jigarius ha scritto ...