MediaWiki创建页面失败:会话数据丢失问题排查求助
MediaWiki提交页面会话丢失错误排查方案
我的MediaWiki部署在WordPress的/wiki子目录,通过AuthWP实现WordPress用户登录,同时启用了AccessControl扩展。提交新页面时持续触发错误:
抱歉!由于会话数据丢失,我们无法处理您的编辑
但报错后右上角仍显示登录用户名,会话表面处于活跃状态。已准备好LocalSettings.php配置、AuthWP生成的WordPress用户dump、MediaWiki的UserInfo dump,可按需提供调试输出或日志文件。
核心排查方向
1. Cookie配置一致性检查
- 确认MediaWiki的
$wgCookiePath设置为/wiki/,避免与WordPress根目录Cookie产生路径冲突 - 核对
$wgCookieDomain与WordPress的Cookie域名完全一致,确保跨子目录会话共享的域名匹配 - 检查两者Cookie的
Secure/HttpOnly属性、过期时间是否统一,防止Cookie被浏览器提前清理或拦截
2. AuthWP会话同步有效性验证
- 确认
$wgAuthWP_SyncSession已设置为true,开启WordPress与MediaWiki的会话同步 - 对比WordPress用户dump和MediaWiki UserInfo中的会话ID,若不一致说明AuthWP未完成会话同步
- 检查AuthWP是否在登录时正确初始化MediaWiki的
$wgUser会话数据,尤其是会话标识字段
3. AccessControl扩展冲突排查
- 临时禁用AccessControl扩展后重新测试提交操作,若错误消失则说明该扩展与AuthWP会话逻辑存在冲突
- 查看AccessControl是否重载了MediaWiki默认的编辑会话校验逻辑,比如修改了
EditPage类中的会话验证步骤
4. MediaWiki会话存储检查
- 确认
$wgSessionHandler配置正确,若使用数据库存储,检查session表的读写权限及数据是否正常 - 查看MediaWiki调试日志(路径由
$wgDebugLogFile指定),排查是否存在会话写入失败的报错信息 - 用MediaWiki本地用户登录测试提交,若正常则问题锁定在AuthWP会话同步环节
5. 调试输出建议
在LocalSettings.php中添加以下代码,输出会话关键信息到日志:
wfDebugLog('session', '当前会话ID: ' . session_id()); wfDebugLog('session', 'MediaWiki用户ID: ' . $wgUser->getId()); wfDebugLog('session', 'AuthWP同步的WordPress用户ID: ' . AuthWP::getWPUserId());
提交页面时查看日志,对比提交前后会话ID是否变化、用户ID是否保持一致,定位会话中断点。
内容的提问来源于stack exchange,提问作者HelloWorld
相关产品推荐
相关产品推荐

