phpmyadmin 16.04 中出现“弃用通知”错误

phpmyadmin 16.04 中出现“弃用通知”错误

我在 16.04 中启动 phpmyadmin 时出现错误:

Deprecation Notice in ./../php/php-gettext/streams.php#48

Backtrace

./../php/php-gettext/gettext.inc#41: require()
./libraries/select_lang.lib.php#477: require_once(./../php/php-gettext/gettext.inc)
./libraries/common.inc.php#569: require(./libraries/select_lang.lib.php)
./index.php#12: require_once(./libraries/common.inc.php)

它还会继续执行这些操作,并且回溯与上面相同:

Deprecation Notice in ./../php/php-gettext/streams.php#84
Deprecation Notice in ./../php/php-gettext/streams.php#145
Deprecation Notice in ./../php/php-gettext/gettext.php#36

我已经更新并验证了我使用的是最新版 gettext 和 mbstring。有什么解决办法吗?

答案1

这取决于你是否有足够的冒险精神。如果你理解了错误,这意味着你的 PHP 有一些旧的类构造函数。

旧版 Php 类构造函数

Class myclassname {

    function myclassname() {
      //This is a constructor
    }

新的 Php 类构造函数

Class myclassname {
    function __construct() {
      //this is the new constructor using __construct instead of the same function name as class name.
}

所以我所做的就是进入/usr/share/php/php-gettext/stream.php/usr/share/php/php-gettext/gettext.php(或错误中提到的任何文件),转到该文件并更改function myclassname()function __construct

该功能myclassname应该与 CLASSmyclassname声明相同。

如果您使用的是装有最新 gettext 的 ubuntu 16.04,您应该会看到大约 4 个错误。我只是更改了它,这对您的系统没有危害。这是一种过时的编程语法,如果您将来升级,也不会遇到任何问题。我会说这是一个安全的编辑。

这其实不算什么大变化,只是语法更新。如果你从 apt-get 包安装,你真的别无选择,除非你自己编译。

sudo nano /usr/share/php/php-gettext/streams.php

第 48 行 StringReader 错误。

转到第 52 行并更改

function StringReader ($str='') {

function __construct($str='') {

第 84 行 FileReader 错误

转到第 90 行并更改

function FileReader($filename) {

function __construct($filename) {

第 145 行 CacheFileReader 错误

转到第 146 行并更改

function CachedFileReader($filename) {

function __construct($filename) {

使用sudo nano /usr/share/php/php-gettext/gettext.php

第 36 行gettext_reader {错误

我想你现在明白了,转到第 101 行并更改

function gettext_reader($Reader, $enable_cache = true) {

function __construct($Reader, $enable_cache = true) {

答案2

由于我还没有足够的声誉来评论特别的人的回答很棒,我只会回复。

以下是执行建议的编辑的单行命令:

sed -ri.bak 's:function StringReader.*:function __construct($str=\x27\x27) {:' /usr/share/php/php-gettext/streams.php
sed -ri 's:function FileReader.*:function __construct($filename) {:' /usr/share/php/php-gettext/streams.php
sed -ri 's:function CachedFileReader.*:function __construct($filename) {:' /usr/share/php/php-gettext/streams.php
sed -ri.bak 's:function gettext_reader.*:function __construct($Reader, $enable_cache = true) {:' /usr/share/php/php-gettext/gettext.php

答案3

您可以使用另一个 PPA 来安装 phpmyadmin。这里是PPA 链接

sudo add-apt-repository ppa:nijel/phpmyadmin
sudo apt update
sudo apt install phpmyadmin

因为这只是一个临时解决方案,或者不是一个最佳解决方案,直到 ubuntu 存储库中的 phpmyadmin 包被重建。

答案4

phpMyAdmin 登录页面上的“弃用通知”消息问题可以通过编辑 php.ini 文件轻松解决/etc/php/7.0/apache2/php.ini

将 error_reporting 值更改为:

error_reporting = ~E_DEPRECATED & E_ALL     

默认情况下它处于注释位置,因此取消注释并进行更改。

然后重新启动Apache:

sudo systemctl restart apache2

相关内容