В Drupal 7 я мог вручную редактировать {system}
таблицу в базе данных, чтобы отключить стаб-модуль. На моем сайте Drupal 8 эта таблица исчезла.
Как я могу вручную отключить модуль в Drupal 8?
Данные system
таблицы Drupal 7 теперь хранятся в config
таблице в Drupal 8 относительно core.extension
параметра.
Решение 1. Обновление конфигурации
Вы можете запустить следующий код, используя drush eval
или, возможно, используя модуль Devel для 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 data
. Это data
сериализованный массив PHP, в котором вы должны удалить модуль, от которого вы хотите избавиться, из module
ключа конфигурации.
Решение 3: быстрое и грязное решение
cache_config
Однако это решение может привести к сообщениям о том, что модуль не существует в файловой системе, что означает, что что-то не так. Но по крайней мере сломанный модуль отключается, и вы можете получить доступ к своему сайту в большинстве случаев.
Очистка кеша
Иногда вам может потребоваться очистить кеш после выполнения вышеуказанных шагов. Прочтите эту удобную документацию о том, как очистить кеш .
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
как переменная Bash.Сделай это:
источник
drush cache-rebuild
тожеconfig
таблицу, гдеname = 'core.extension'
и удалите модуль из большого двоичного объекта данных, который является сериализованным массивом.(...s:6:"module";a:HERE;{...)
cache_config
таблицу из phpmyadmin или используя командную строку.источник
i:0;s:8:"name of the module";
s:8:"name of the module";i:0;
. @Valli имел в виду, что массив, описывающий количество модулей, должен быть уменьшен в количестве на количество удаленных модулей. Начало создания блоба в моей настройке:a:4:{s:6:"module";a:59:{
массив из 59 модулей. Если вы удалите два, измените значение этого массива на 57.В Drupal 8 попробуйте удалить модуль из папки вашего модуля и запустите rebuild.php.
Попробуй
drush pm-uninstall module-name
также.источник
Подумайте об использовании Drush. Drupal 8 все еще определяет, какими должны быть «отключающие модули». Существует продолжающаяся дискуссия , если должна быть такой вариант , или она должна быть удалена.
источник
Я попробовал все остальные ответы, но продолжал получать сообщение об ошибке друпала. Чтобы решить эту проблему, мне пришлось удалить строку из таблицы key_value (искать имя модуля в столбце имени)
источник
Если вам нужно обновить что-либо, связанное с конфигурацией Drupal, в этом случае
core.extension
используйте Drush:[Drush 8.x в этом примере]
источник
Для этого есть модуль. Этот модуль был размещен в августе 2013 года на drupal.org . На случай, если кому-то нужно.
Отключить модули
Как указано на странице этого модуля,
источник
Таким образом, я вручную удалил модуль с именем "better_messages" из своего экземпляра Drupal 8. Как только я установил модуль "better_messages", сайт вышел из строя. Таким образом, не было никакого способа удалить модуль из пользовательского интерфейса. У меня не установлен Drush. Я сделал много настроек, заданных на форумах, но вот как это наконец-то сработало для меня.
1 Переименовал модуль в old_better_messages в папке модулей.
Через URL запустили http: // IP: порт / имя_фолдера / rebuild.php . Это гарантировало, что сайт вернулся, но только в режиме только для чтения. Я не мог выполнять действия администратора или редактировать статьи.
Использовал следующую команду для удаления записи из базы данных
DELETE FROM key_value WHERE collection = 'system.schema' AND name = 'better_messages';
В моем случае не было записи в базе данных. Я думаю, что это могло быть удалено из-за различных трюков, которые я делал ранее.
Это решило проблему. Это основано на моей интерпретации https://www.drupal.org/node/2487215
источник
Ответ Jigarius выше, вроде работал ...
Мне пришлось: // Читать конфигурацию.
Который должен делать то же самое. Не уверен, почему это не сработало, поскольку Джигариус написал это ...
источник