非静态方法utf_normalizer::nfc()不应该被静态调用

4

目前,我正在安装PHPBB 3.0.10,但出现了以下错误:

Strict Standards: Non-static method utf_normalizer::nfc() should not be called statically in C:\xampp\htdocs\PHPBB\includes\utf\utf_tools.php on line 1781

我已经在PHPBB论坛上试图寻找答案,但没有成功。我对PHP有一定的背景,但不理解静态函数调用和动态函数调用之间的区别。我使用的是PHP v5.4.4,Apache 2.4.2和Xampp 1.8.0,如果这些信息有关联,请知悉。我也是在本地主机上运行,而非远程服务器。

为了引发这个错误,我只是在安装PHPBB。一旦我插入了数据库设置和管理员账户设置,它就会出现这个错误,并且不允许我继续。我没有安装任何扩展(当然)。

另外,我无法在指定的文件中找到nfc功能。我不确定它是否在include中。我还搜索了所有文件中的“function nfc”(不包括引号),但是什么也没找到,因此无法使用此内容:Strict Standards: Non-static method STemplate::assign() should not be called statically。我知道这个问题很常见,许多人声称某种修复方法对他们有效,但我无法应用这些修复方法,因为它们是针对早期版本的PHPBB(即1.0.4)。
我过去曾能够在本地安装PHPBB,但现在无法。我目前没有可用的PHPBB安装。
感谢您提供的任何帮助。
3个回答

13

我知道这已经过时了,但与其压制问题,不如解决它的根本问题。

打开 includes/utf/utf_tools.php 文件

转到 ~第1663行

替换:

utf_normalizer::nfkc($text);

使用

$utf_normalizer = new utf_normalizer();
$utf_normalizer->nfkc($text);
unset($utf_normalizer);

我仍然不确定为什么这个问题没有在适当的版本中修复


这也在3.0.12版本中!使用这行代码解决了这个问题,谢谢! - hlx98007

6

请打开 /includes 文件夹并打开 startup.php 文件。

在第22行更改该行:

error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);

为了

error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT);

这可能会解决你的问题 =)。

谢谢,那个方法很有效,我现在已经成功安装了论坛。不过,你知道我该如何修复这个错误,而不是隐藏它吗?谢谢。 - Michael Thompson
7
修改错误级别并不能修复根本性的错误。为什么要接受一个实际上没有回答你问题的答案呢? - SickHippie

2

今天我更新到3.0.12版本后遇到了类似的问题,我认为适当的解决方案是将utf_normalizer.php中的所有函数都设为静态函数,而不是将调用这些函数的所有内容都变为非静态。 顺便说一下,在phpbb 3.1.1中就是这样做的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接