WordPress多站点MAIN站点无法激活插件,寻求排查方案
遗漏排查点与测试方法
数据库层面
- 检查主站点
wp_options表的active_plugins字段:- 进入phpMyAdmin查看该字段值,确认是合法的序列化数组(无语法错误);
- 手动更新该字段(比如添加
a:1:{i:0;s:19:"hello-dolly/hello.php";}),刷新后台看插件是否显示已激活; - 在主题
functions.php中添加var_dump(get_option('active_plugins'));,访问前台看返回值是否正常。
- 验证主站点的多站点关联表:
- 检查
wp_blogs表中主站点(通常blog_id=1)的site_id、domain、path是否与实际一致; - 查看
wp_blogmeta表中主站点的元数据,排查是否存在异常键值对干扰插件激活逻辑。
- 检查
核心文件与钩子调试
- 校验WordPress核心文件完整性:
- 通过后台「站点健康」工具扫描核心文件,或手动下载对应版本的WP核心包,替换
wp-admin、wp-includes目录及根目录下的核心文件(保留wp-content和wp-config.php);
- 通过后台「站点健康」工具扫描核心文件,或手动下载对应版本的WP核心包,替换
- 监听插件激活钩子:
在主站点functions.php中添加以下代码,尝试激活插件后查看服务器error.log:
若钩子未触发,说明激活请求未正常执行;若触发但无后续,可能是写入数据库环节失败。add_action('activate_plugin', function($plugin, $network_wide) { error_log('[激活钩子触发] 插件:' . $plugin . ',网络激活:' . var_export($network_wide, true)); }, 10, 2); add_action('activated_plugin', function($plugin, $network_wide) { error_log('[激活完成钩子] 插件:' . $plugin . ',网络激活:' . var_export($network_wide, true)); }, 10, 2);
权限与缓存层面
- 排查管理员权限细节:
- 检查
wp_usermeta表中主站点管理员的wp_capabilities字段,确认包含activate_plugins和manage_options权限; - 查看
wp_sitemeta表的site_admins选项,确认该管理员在站点管理员列表中。
- 检查
- 清除各类缓存:
- 删除
wp-content/object-cache.php(若存在),清空WP对象缓存; - 重启服务器OPcache服务,或临时关闭OPcache测试;
- 若使用CDN,暂时禁用CDN后重试激活操作。
- 删除
日志与极简测试
- 开启WP_DEBUG日志:
在wp-config.php中添加以下代码,尝试激活插件后查看wp-content/debug.log的隐藏报错:define('WP_DEBUG', true); define('WP_DEBUG_LOG', true); define('WP_DEBUG_DISPLAY', false); - 测试极简插件激活:
新建一个空插件(仅包含插件头信息),上传至主站点插件目录,尝试激活,验证是否是特定插件的兼容性问题。
内容的提问来源于stack exchange,提问作者aurelb
相关产品推荐
相关产品推荐

