Answers:
现在,Drupal 7 system
表数据config
根据core.extension
参数存储在Drupal 8 中的表中。
解决方案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变量。
config
表所在的位置,name = 'core.extension'
然后从数据blob中删除该模块,该数据blob是序列化的数组。(...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:{
,blob的开头是,它是59个模块的数组。如果删除两个转变即数组值57
考虑使用Drush。Drupal 8仍在定义什么是“禁用模块”。目前正在进行讨论,是否应该选择该选项或将其删除。
如果您需要更新与Drupal配置相关的任何信息,在这种情况下core.extension
,请使用Drush:
[本例中为Drush 8.x]
drush cedit core.extension
有一个模块。该模块于2013年8月发布在drupal.org上。万一有人需要。
如本模块页面所述,
Drupal 8出于多种原因取消了禁用模块的功能。 请参阅#1199946:禁用的模块无法修复,因此需要删除“禁用”功能,并且各种核心模块和贡献模块的队列中还有许多其他问题。
该模块恢复了从UI或使用Drush暂时禁用模块的功能。请注意,禁用模块后,无法保证您的内容,配置甚至站点。
这样,我从Drupal 8实例中手动删除了一个名为“ better_messages”的模块。一旦我安装了“ better_messages”模块,该站点就关闭了。因此,无法从用户界面中卸载模块。我没有安装Drush。我已经完成了论坛中提供的许多设置,但是这终于对我起作用了。
1在modules文件夹中将模块重命名为old_better_messages。
通过url运行http:// IP:port / foldername / rebuild.php。这样可以确保该站点返回,但仅处于只读模式。我无法进行管理活动或编辑文章。
使用以下命令从数据库中删除条目
从key_value中删除WHERE collection ='system.schema'并且name ='better_messages';
就我而言,数据库中没有任何条目。我认为可能由于我之前所做的各种特技而被删除了。
这解决了问题。这是基于我对https://www.drupal.org/node/2487215的解释