尝试在 Xampp 上安装 Invision 电源板时出现 PHP 错误

如何解决尝试在 Xampp 上安装 Invision 电源板时出现 PHP 错误

尝试在我的 Xampp Apache 服务器上安装最新的 Invision Power Board 时,出现此错误

Fatal error: Cannot make static method XMLReader::open() non static in class IPS\Xml\_XMLReader in D:\xampp\htdocs\PATH_TO_IPS_INSTALL\system\Xml\XMLReader.PHP on line 34

这是我的 PHP.ini 扩展部分的摘录

extension=bz2
extension=curl
extension=ffi
extension=ftp
extension=fileinfo
extension=gd
extension=gettext
extension=gmp
extension=intl
extension=imap
extension=ldap
extension=mbstring
extension=exif      
extension=MysqLi
extension=oci8_12c  
extension=odbc
extension=openssl
extension=pdo_firebird
extension=pdo_MysqL
extension=pdo_oci
extension=pdo_odbc
extension=pdo_pgsql
extension=pdo_sqlite
extension=pgsql
extension=shmop

extension=soap
extension=sockets
extension=sodium
extension=sqlite3
extension=tidy
extension=xsl

我该怎么做才能消除错误

编辑: 这是从第 23 行开始的内容

class _XMLReader extends \XMLReader
{
    /**
     * Open a file or URL with XMLReader to read it
     *
     * @param   string  $uri        The URI/path to open
     * @param   string  $encoding   The encoding to use,or NULL
     * @param   int     $options    Bitmask of LIBXML_* constants
     * @return  bool
     * @note    We are disabling network access while loading the content to prevent XXE
     */
    public function open( $uri,$encoding=NULL,$options=0 )
    {
        if( $options === 0 )
        {
            $options = LIBXML_NONET;
        }

        return parent::open( $uri,$encoding,$options );
    }
}

解决方法

错误似乎是子类试图用非静态 open() 方法重载静态 open() 方法。来自https://www.php.net/manual/en/migration80.incompatible.php

XMLReader

XMLReader::open() 和 XMLReader::xml() 现在是静态方法。他们 仍然可以作为实例方法调用,但继承类需要 如果它们覆盖这些方法,则将它们声明为静态。

由于这是 PHP 8.0.0 中的更改,我猜测您使用的 PHP 版本 >= 8.0.0 与 PowerBoard 不兼容。

可能有一种方法可以将这段代码更改为在 8.0.0 上运行,但我的猜测是,如果您使用的是不受支持的主要版本,您可能会遇到除此之外的更多问题。

我的建议是安装 Power Board 推荐的 PHP 版本。我试图在 Power Board 网站上找到那个版本,但简单地看一看并没有发现任何东西。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?