我在 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