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


11

在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上。对解决有什么想法吗?


本教程中,它说,你必须启用mcryptmbstringPHP模块,并重新启动Apache。是你做的吗?
bistoco '16

是的,我更新了mcrypt和mbstring并重新启动了Apache。
tseward

我建议适合您的php / mysql版本的[直接下载软件包](phpmyadmin.net/downloads)进行故障排除。
bistoco

Answers:


29

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

OLD 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应与CLASS myclassname声明相同。

如果您使用最新的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
一个人应该看到:sudo nano /usr/share/php/php-gettext/gettext.phpsudo nano /usr/share/php/php-gettext/streams.php
Technico.top

打包的文件来自20101225。因此,即使只是备份而已-始终-您应该可以安全地通过未解决补丁程序的软件包更新来解决问题,但任何更新都应包含该补丁程序!
flowtron

8

由于我尚无足够的声誉来评论Speciale Special的出色答案,因此,我将改为回复。

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

sed -ri.bak的: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

节省了我一点时间...谢谢男人:-)
亚当

5

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

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

由于它只是一个临时解决方案,也不是最佳解决方案,因此需要重建ubuntu存储库中的phpmyadmin软件包。


1
这帮助了我,虽然
沙善Saxena先生

请注意,此PPA已超过一年未收到任何更新。
洛朗

0

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

将error_reporting值更改为:

error_reporting = ~E_DEPRECATED & E_ALL     

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

然后重新启动Apache:

sudo systemctl restart apache2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.