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

Posted

技术标签:

【中文标题】尝试在 Xampp 上安装 Invision 电源板时出现 PHP 错误【英文标题】:PHP Error When Trying To Install Invision Power Board On Xampp 【发布时间】:2021-04-27 21:20:20 【问题描述】:

尝试在我的 Xampp Apache 服务器上安装最新的 Invision 电源板时,我收到此错误:

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 );
    

【问题讨论】:

"...XMLReader.php 在第 34 行" 第 34 行是什么? 更新帖子以包含第 34 行的内容 【参考方案1】:

错误似乎是子类试图用非静态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 网站上查找该版本是什么,但简单浏览了一下并没有找到任何东西。

【讨论】:

以上是关于尝试在 Xampp 上安装 Invision 电源板时出现 PHP 错误的主要内容,如果未能解决你的问题,请参考以下文章

在 XAMPP (Windows) 上安装 PECL 扩展

在安装了 xampp 的 Wordpress 上导入 XML

无法在 Windows 上使用 Xampp 安装 Composer

在 XAMPP 上安装 FFMPEG

安装 XAMPP 时如何在 UAC 上工作

XAMPP 与单独安装