Risposte:
I system
dati della tabella Drupal 7 sono ora memorizzati nella config
tabella in Drupal 8 rispetto al core.extension
parametro.
Soluzione 1: aggiorna la configurazione
È possibile eseguire il codice seguente utilizzando drush eval
o 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 config
direttamente la tabella.
Nella riga della config
tabella in cui name = "core.extension"
e modifica la colonna BLOB data
. Si data
tratta di un array PHP serializzato in cui è necessario rimuovere il modulo che si desidera eliminare dalla module
chiave della configurazione.
Soluzione 3: soluzione veloce e sporca
cache_config
Tuttavia, 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 $module
come una variabile Bash.
Fai questo:
rm -rf modules/your_stubborn_module
rm -rf sites/default/files/php
drush cache-rebuild
anche tu
config
tabella in cui name = 'core.extension'
e rimuovere il modulo dal BLOB di dati che è un array serializzato.(...s:6:"module";a:HERE;{...)
cache_config
tabella 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.extension
usa 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 ...