किसी मॉड्यूल को मैन्युअल रूप से अक्षम करें


39

Drupal 7 में, मैं मैन्युअल रूप से {system}एक स्टबबोन मॉड्यूल को निष्क्रिय करने के लिए डेटाबेस में तालिका को संपादित कर सकता था । मेरी Drupal 8 साइट में, यह तालिका चली गई है।

मैं Drupal 8 में मैन्युअल रूप से एक मॉड्यूल को कैसे अक्षम कर सकता हूं?

जवाबों:


34

Drupal 7 systemतालिका डेटा अब पैरामीटर के configविरुद्ध Drupal 8 में तालिका में संग्रहीत है core.extension

समाधान 1: कॉन्फ़िगरेशन अपडेट करें

आप निम्न कोड का उपयोग करके चला सकते हैं drush evalया देवल मॉड्यूल के प्रावधान का उपयोग कर सकते हैं 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();

आप यह सब एक त्वरित वन-लाइनर के साथ कर सकते हैं 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();"

समाधान 2: यदि आप PHP को निष्पादित नहीं कर सकते हैं तो कॉन्फ़िगर तालिका को संपादित करें

यदि साइट समस्याग्रस्त मॉड्यूल के कारण टूट गई है और आप PHP कोड भी नहीं चला सकते हैं, तो हो सकता है कि आप configतालिका को सीधे संपादित कर सकें।

configतालिका में पंक्ति में जहां name = "core.extension"और BLOB कॉलम संपादित करें datadataएक धारावाहिक पीएचपी सरणी आप मॉड्यूल आप से छुटकारा पाने के लिए चाहते हैं को दूर करने के लिए है, जहां है moduleविन्यास के प्रमुख।

समाधान 3: तेज और गंदा समाधान

  • फ़ाइल सिस्टम से मॉड्यूल निकालें
  • टेबल को काटें cache_config

हालाँकि, यह समाधान संदेश में कह सकता है कि मॉड्यूल फ़ाइल सिस्टम में मौजूद नहीं है, जिसका अर्थ है कि कुछ गलत है। लेकिन कम से कम टूटा हुआ मॉड्यूल अक्षम हो जाता है और आप ज्यादातर मामलों में अपनी साइट तक पहुंच सकते हैं।

कैशे साफ़ करना

कभी-कभी उपरोक्त चरणों का पालन करने के बाद आपको कैश साफ़ करना पड़ सकता है। कैश को कैसे साफ़ करें, इस आसान दस्तावेज को पढ़ें ।


1
मॉड्यूल की स्थापना रद्द करने के संदर्भ में मुझे लगता है कि यह सबसे अच्छा समाधान है।
डेविड

1
यदि आपको किसी मॉड्यूल की स्थापना रद्द करने की आवश्यकता है, लेकिन ऐसा नहीं हो सकता है क्योंकि मॉड्यूल के लिए टेबल गायब हैं, तो आप तीसरे विकल्प का उपयोग कर सकते हैं drush eval। एक उदाहरण वन-लाइनर है: 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();बच गए डॉलर के चिन्ह पर ध्यान दें ताकि कमांड लाइन $moduleबैश वेरिएबल के रूप में गलत व्याख्या न करे ।
सिलीग्वेलो

आलसी एक लाइनर के लिए चीयर्स! हालांकि अंत में एक उद्धरण याद आ रही है
मैट फ्लेचर

यह बहुत आवश्यक है कि आप कैश क्लियर करें, और फिर कॉन्फिगरेशन को एक्सपोर्ट करें ताकि आप तैयार होने तक फिर से इंस्टॉल करने की कोशिश न करें।
एडादडिंसन

16

यह करो:

rm -rf modules/your_stubborn_module
rm -rf sites/default/files/php

मॉड्यूल के आधार पर, आपको कॉन्फ़िगरेशन तालिका से कुछ प्रविष्टियां (valli के उत्तर देखें) और कुछ अन्य तालिकाओं को हटाना पड़ सकता है।
तूरियन

यह मेरे लिए काम नहीं किया।
रॉबी

आपको drush cache-rebuildबहुत
Sky

16
  • मैन्युअल रूप से उस configतालिका को संपादित करें जहां name = 'core.extension'मॉड्यूल को डेटा बूँद से हटा दें जो एक क्रमबद्ध सरणी है।
  • मॉड्यूल सरणी लंबाई के रूप में अच्छी तरह से कम करने के लिए जागरूक रहें (...s:6:"module";a:HERE;{...)
  • फ़ेम्पीडमिन से cache_configतालिका को कमांड करें या कमांड-लाइन का उपयोग करें।

1
धन्यवाद, इससे मुझे मदद मिली। उत्तर को "मैन्युअल रूप से {config} तालिका संपादित करें " पढ़ना चाहिए । BLOB सामग्री से हटाने के लिए पाठ भाग है:i:0;s:8:"name of the module";
Hendrik

2
इस उत्तर ने एक ऐसी स्थिति को हल करने में मदद की, जहां एक मॉड्यूल को न तो अनइंस्टॉल किया जा सकता था और न ही फिर से स्थापित किया जा सकता था क्योंकि यह परिभाषित एक कस्टम इकाई गायब थी।
डेनियल

1
@ हेंड्रिक यह आपके लिए काम कर सकता है लेकिन प्रत्येक मॉड्यूल को हटाने के लिए स्ट्रिंग को संरचित किया जाना चाहिए s:8:"name of the module";i:0;। @Valli का मतलब यह था कि मॉड्यूल की संख्या का वर्णन करने वाले सरणी को हटाए गए मॉड्यूल की मात्रा से संख्या में घटाया जाना चाहिए। मेरे सेटअप में बूँद की भीख माँग है a:4:{s:6:"module";a:59:{, जो 59 मॉड्यूल की एक सरणी है। यदि आप दो परिवर्तन हटाते हैं, तो यह मान 57 पर आ जाता है।
डिमेक

3

Drush का उपयोग करने पर विचार करें। Drupal 8 अभी भी परिभाषित कर रहा है कि "अक्षम करने वाले मॉड्यूल" क्या होने चाहिए। एक चर्चा चल रही है कि क्या वह विकल्प होना चाहिए या उसे हटा दिया जाना चाहिए।


मैं स्थानीय रूप से एक विंडोज़ पीसी पर विकसित कर रहा हूं और पिछली बार जब मैंने देखा कि ड्रुपल 8 के लिए तैयार नहीं था। मुझे फिर से देखना होगा।
बम्पवॉ

@bumpaw Drush को विंडोज पर भी काम करना चाहिए। यह कम से कम स्थानीय स्तर पर आपकी मदद करेगा। जब यह उत्पादन सर्वर की बात आती है, तो मुझे पता है कि कई साझा होस्ट आपको ड्रश या यहां तक ​​कि एसएसएच प्रदान नहीं करते हैं जो आमतौर पर प्रबंधन के तरीके को अधिक बोझिल बना देता है। drush.org/drush_windows_installer
hampusn

और, ड्रश का उपयोग करते हुए, एक "मॉड्यूल को मैन्युअल रूप से कैसे हटाता है" जो कि यूआई प्रक्रिया से अलग है? आप इस प्रश्न का उत्तर नहीं देते हैं।
1kenthomas

3

Drupal 8 में, अपने मॉड्यूल फ़ोल्डर से मॉड्यूल को हटाने का प्रयास करें और पुनर्निर्माण करें।

drush pm-uninstall module-nameसाथ ही कोशिश करें ।


2

मैंने अन्य सभी उत्तरों की कोशिश की लेकिन एक त्रुटि त्रुटि संदेश प्राप्त करता रहा। इसे हल करने के लिए मुझे key_value टेबल से एक पंक्ति को हटाना होगा (नाम कॉलम में मॉड्यूल का नाम देखें)


2

यदि आपको इस मामले में Drupal कॉन्फ़िगरेशन से संबंधित कुछ भी अपडेट करने की आवश्यकता है core.extension, तो Drush का उपयोग करें:

[इस उदाहरण में Drush 8.x]

drush cedit core.extension

1

उसके लिए एक मॉड्यूल है। यह मॉड्यूल अगस्त 2013 में drupal.org पर पोस्ट किया गया था । मामले में किसी को जरूरत है।

मॉड्यूल अक्षम करें

जैसा कि इस मॉड्यूल के पेज पर बताया गया है,

Drupal 8 ने कई कारणों से मॉड्यूल को अक्षम करने की क्षमता को हटा दिया है। # 1199946 देखें: अक्षम मॉड्यूल मरम्मत से परे टूट जाते हैं इसलिए "अक्षम" कार्यक्षमता को हटाने की आवश्यकता होती है और विभिन्न कोर और योगदान मॉड्यूल की कतार में कई अन्य मुद्दों।

यह मॉड्यूल UI से या ड्रश के साथ (अस्थायी रूप से) अक्षम मॉड्यूल की क्षमता को वापस लाता है। ध्यान दें, कि किसी मॉड्यूल को अक्षम करने के बाद आपकी सामग्री, कॉन्फ़िगरेशन या यहां तक ​​कि आपकी साइट की कोई गारंटी नहीं है।


0

यह है कि, मैंने अपने Drupal 8 उदाहरण से "better_messages" नामक एक मॉड्यूल को मैन्युअल रूप से हटा दिया है। जैसे ही मैंने "better_messages" मॉड्यूल स्थापित किया, साइट नीचे चली गई। इसलिए उपयोगकर्ता इंटरफ़ेस से मॉड्यूल की स्थापना रद्द करने का कोई तरीका नहीं था। मैं Drush स्थापित नहीं है। मैंने मंचों में कई सेटिंग्स दी हैं, लेकिन इस तरह से यह मेरे लिए आखिरकार काम कर गया।

1 मॉड्यूल फ़ोल्डर में old_better_messages के लिए मॉड्यूल का नाम दिया।

  1. Url के माध्यम से, http: // IP: port / foldername / rebuild.php चला गया । इससे यह सुनिश्चित हो गया कि साइट वापस आ गई है, लेकिन केवल रीड-ओनली मोड में है। मैं व्यवस्थापक गतिविधियों या लेखों को संपादित नहीं कर सका।

  2. डेटाबेस से प्रविष्टि को हटाने के लिए निम्न आदेश का उपयोग किया जाता है

DELETE FROM key_value WHERE संग्रह = 'system.schema' और नाम = 'better_messages';

मेरे मामले में, डेटाबेस में कोई प्रविष्टि नहीं थी। मुझे लगता है कि यह मेरे द्वारा पहले किए गए विभिन्न स्टंटों के कारण हटा दिया गया हो सकता है।

  1. फिर डीबी विज़ुअलाइज़र का उपयोग करते हुए, मैंने कैश के साथ शुरू होने वाली सभी तालिकाओं से प्रविष्टियों को हटा दिया।

इससे समस्या हल हो गई। यह https://www.drupal.org/node/2487215 की मेरी व्याख्या पर आधारित है


0

ऊपर Jigarius 'जवाब, काम की तरह ...

मुझे निम्न करना था: // कॉन्फ़िगरेशन पढ़ें।

$module_data = \Drupal::config('core.extension')->get()['module'];

कौन सा चाहिए एक ही बात करते हैं। निश्चित नहीं है कि यह काम क्यों नहीं किया क्योंकि Jigarius ने इसे लिखा है ...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.