You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 23:45:40