MediaWiki 1.38.4 TemplateParser.php类型错误求助:站点无法访问
本地MediaWiki 1.38.4站点TemplateParser.php报错无法访问问题
问题详情
基于XAMPP+Apache搭建的本地MediaWiki 1.38.4站点,正常运行数周后突然出现TemplateParser.php相关错误,导致站点完全无法访问,错误日志如下:
MediaWiki internal error. Original exception: [3d60e113338e8a53946d26be] /fangirlbook/index.php/P%C3%A1gina_principal TypeError: Cannot access offset of type string on string Backtrace: from C:\xampp\htdocs\fangirlbook\includes\TemplateParser.php(134) #0 C:\xampp\htdocs\fangirlbook\includes\TemplateParser.php(289): TemplateParser->getTemplate(string) #1 C:\xampp\htdocs\fangirlbook\includes\skins\SkinMustache.php(65): TemplateParser->processTemplate(string, array) #2 C:\xampp\htdocs\fangirlbook\skins\Vector\includes\SkinVector.php(455): SkinMustache->generateHTML() #3 C:\xampp\htdocs\fangirlbook\includes\skins\SkinTemplate.php(150): Vector\SkinVector->generateHTML() #4 C:\xampp\htdocs\fangirlbook\includes\OutputPage.php(2807): SkinTemplate->outputPage() #5 C:\xampp\htdocs\fangirlbook\includes\MediaWiki.php(926): OutputPage->output(boolean) #6 C:\xampp\htdocs\fangirlbook\includes\MediaWiki.php(939): MediaWiki::{closure}() #7 C:\xampp\htdocs\fangirlbook\includes\MediaWiki.php(563): MediaWiki->main() #8 C:\xampp\htdocs\fangirlbook\index.php(53): MediaWiki->run() #9 C:\xampp\htdocs\fangirlbook\index.php(46): wfIndexMain() #10 {main} Exception caught inside exception handler: [3d60e113338e8a53946d26be] /fangirlbook/index.php/P%C3%A1gina_principal TypeError: Cannot access offset of type string on string Backtrace: from C:\xampp\htdocs\fangirlbook\includes\TemplateParser.php(134) #0 C:\xampp\htdocs\fangirlbook\includes\TemplateParser.php(289): TemplateParser->getTemplate(string) #1 C:\xampp\htdocs\fangirlbook\includes\skins\SkinMustache.php(65): TemplateParser->processTemplate(string, array) #2 C:\xampp\htdocs\fangirlbook\skins\Vector\includes\SkinVector.php(455): SkinMustache->generateHTML() #3 C:\xampp\htdocs\fangirlbook\includes\skins\SkinTemplate.php(150): Vector\SkinVector->generateHTML() #4 C:\xampp\htdocs\fangirlbook\includes\OutputPage.php(2807): SkinTemplate->outputPage() #5 C:\xampp\htdocs\fangirlbook\includes\exception\MWExceptionRenderer.php(157): OutputPage->output() #6 C:\xampp\htdocs\fangirlbook\includes\exception\MWExceptionRenderer.php(76): MWExceptionRenderer::reportHTML(TypeError) #7 C:\xampp\htdocs\fangirlbook\includes\exception\MWExceptionHandler.php(107): MWExceptionRenderer::output(TypeError, integer) #8 C:\xampp\htdocs\fangirlbook\includes\exception\MWExceptionHandler.php(202): MWExceptionHandler::report(TypeError) #9 C:\xampp\htdocs\fangirlbook\includes\MediaWiki.php(585): MWExceptionHandler::handleException(TypeError, string) #10 C:\xampp\htdocs\fangirlbook\index.php(53): MediaWiki->run() #11 C:\xampp\htdocs\fangirlbook\index.php(46): wfIndexMain() #12 {main}
已尝试操作
- 重启系统
- 重新安装Wiki并恢复手动备份的文件与数据库,问题仍未解决
可行解决方案
1. 检查PHP版本兼容性
MediaWiki 1.38.4仅支持PHP 7.3~7.4版本,若当前XAMPP使用PHP 8.0+,会触发此类类型错误。操作步骤:
- 打开XAMPP控制面板,切换到PHP 7.4版本
- 重启Apache服务后测试站点
2. 修复TemplateParser.php代码
错误发生在TemplateParser.php第134行,原因是代码尝试对字符串进行数组偏移访问。修改代码:
- 打开
C:\xampp\htdocs\fangirlbook\includes\TemplateParser.php - 定位到第134行,添加数组类型检查:
原代码(示例):
修改为:if ( $cacheEntry['mtime'] < $fileMtime ) {if ( is_array($cacheEntry) && $cacheEntry['mtime'] < $fileMtime ) {
3. 替换Vector皮肤文件
错误回溯指向Vector皮肤,可能是皮肤文件损坏:
- 下载对应MediaWiki 1.38.4版本的Vector皮肤包
- 备份站点
skins/Vector目录后,用新文件覆盖原有目录 - 重启Apache服务
4. 清除MediaWiki缓存
缓存文件损坏也可能引发解析错误:
- 删除
C:\xampp\htdocs\fangirlbook\cache目录下的所有文件(保留目录本身) - 重启Apache服务
5. 排查自定义模板
若之前修改过系统或自定义模板,可能导致解析异常:
- 暂时将
templates目录下的自定义模板移至其他位置 - 测试站点是否恢复访问,逐步排查问题模板
内容的提问来源于stack exchange,提问作者Bea Karnstein
相关产品推荐
相关产品推荐

