MediaWiki升级(1.19.6到1.22.2)中断--fetchContent()错误

时间:2014-02-07 21:12:26

标签: php mediawiki

刚刚将Mediawiki 1.19.6升级到最新版本1.22.2。 使用update.php,工作得很好。首页加载,如果您输入其确切的URL,则会加载一些文章。但是,跟随任何链接产生:

  

可捕获的致命错误:参数1传递给   ContentHandler :: getContentText()必须实现接口内容,   布尔给定,在第389行的< wiki path> /includes/Article.php中调用   并在< wiki path> /includes/content/ContentHandler.php中定义   95。

我在Article.php中查找了对getContentText()的调用,并且它位于一个名为fetchContent()的函数中,其中有一个关于它的注释,并注意到其中的ContentHandler方法已被弃用。

我无法弄清楚如何解决出错的问题,网络搜索只会出现标记为已修复的错误报告......任何想法?非常感谢。

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

我们遇到了同样的问题。我们的ICT人员通过调整mediawiki的includes目录中的Article.php文件来处理它。仅调整了1个函数(第377行函数fetchContent())。我不知道确切的工作原理,但MediaWiki恢复正常。

此外,我相信您需要访问以下网址来运行mediawiki更新例程: 'HostAdress'/链接到MediaWiki / MW-配置/

Article.php中的原始功能:

function fetchContent() { #BC cruft!
    ContentHandler::deprecated( __METHOD__, '1.21' );

    if ( $this->mContentLoaded && $this->mContent ) {
        return $this->mContent;
    }

    wfProfileIn( __METHOD__ );

    $content = $this->fetchContentObject();

    // @todo Get rid of mContent everywhere!
    $this->mContent = ContentHandler::getContentText( $content );
    ContentHandler::runLegacyHooks( 'ArticleAfterFetchContent', array( &$this, &$this->mContent ) );

    wfProfileOut( __METHOD__ );

    return $this->mContent;
}

Article.php中的新功能:

function fetchContent() { #BC cruft!
    ContentHandler::deprecated( __METHOD__, '1.21' );

    if ( $this->mContentLoaded && $this->mContent ) {
        return $this->mContent;
    }

    wfProfileIn( __METHOD__ );

    $content = $this->fetchContentObject();

    if ( !$content ) {
    wfProfileOut( __METHOD__ );
    return false;
    }

    // @todo Get rid of mContent everywhere!
    $this->mContent = ContentHandler::getContentText( $content );
    ContentHandler::runLegacyHooks( 'ArticleAfterFetchContent', array( &$this, &$this->mContent ) );

    wfProfileOut( __METHOD__ );

    return $this->mContent;
}