PHP 7 with phpmyadmin 给出了很多弃用通知

PHP 7 with phpmyadmin gives lots of Deprecation Notices

我安装了 Ubuntu 16.04 LTS 运行 PHP7 和 phpmyadmin。 但是,我收到很多弃用通知,例如:

Deprecation Notice in ./../php/php-gettext/streams.php#48  
Methods with the same name as their class will not be constructors in a future version of PHP; StringReader has a deprecated constructor

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)

这是个问题吗?我怎样才能摆脱这些通知(每次加载页面或执行操作时它们都会弹出)?

您应该尝试在 php.ini 中设置 error_reporting = ~E_DEPRECATED,这将消除弃用错误。它应该类似于 error_reporting = ~E_DEPRECATED & E_ALL。 如果有效请告诉我。

您没有提到您使用的是哪个版本的 phpMyAdmin 或它的安装位置,但它似乎是 Ubuntu 打包版本 4.5.4.1 或相当旧且不受支持的版本资源。无论哪种方式,我相信您的问题已在 https://github.com/phpmyadmin/phpmyadmin/issues/11462 报告(并修复)——如果您使用的是 Ubuntu 打包版本,那里的评论表明 nijel PPA 版本应该更适合您。

当然,Beniamin Pantiru 接受的答案也很好,如果您是 运行 生产服务器,您应该减少 PHP 显示的警告和错误的数量作为标准最佳实践。

亲爱的@BeniaminPantiru,你的回答是正确的,但你的解决方案并没有解决问题,因为你告诉 Apache 不要显示弃用错误而不是修复错误。但我们可以通过升级必要的安全更新和软件包轻松修复此错误。输入以下命令将解决问题。

sudo apt-get dist-upgrade

您可以为 phpmyadmin.Here 使用另一个 PPA,它是 PPA Link

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

由于它只是一个临时解决方案或不是最佳解决方案,直到 ubuntu repos 中的 phpmyadmin 包被重建。

我遇到了这个问题并通过简单地重新安装 phpmyadmin 及其依赖项解决了它。 运行 以下命令:

sudo apt-get remove --purge phpmyadmin php-gettext php-mbstring -y
sudo apt-get autoremove -y
sudo apt-get update
sudo apt-get install phpmyadmin php-gettext php-mbstring -y

重新安装后,你应该像新的一样好!

我解决这个问题的方法是按照 depreciation notice error in phpmyadmin with 16.04 上的询问 ubuntu 说明进行操作。它涉及更改 /usr/share/php/php-gettext/streams.php 中的三行和 /usr/share/php/php-gettext/gettext.php.

中的一行

从 link 开始,这是您需要做的更改(如果您有 ubuntu 16.04):

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

第 48 行字符串读取器错误。

转到第 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) {

我已通过在 php.ini 文件路径 /etc/php/7.0

中设置错误报告来修复
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR

共同价值观:

 E_ALL (Show all errors, warnings and notices including coding standards.)

 E_ALL & ~E_NOTICE  (Show all errors, except for notices)

 E_ALL & ~E_NOTICE & ~E_STRICT  (Show all errors, except for notices and coding standards warnings.)

 E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR  (Show only errors)

 Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED

终于彻底解决了这个问题

在您的服务器中找到您的 php.ini 文件。它应该在 /etc/php/7.0/apache2 文件夹中

用 nano 打开它

nano /etc/php/7.0/apache2/php.ini

在php.ini文件

中查找(ctrl+w)upload_max_filesize=2M(默认)

根据需要将默认值更改为 50M、100M 或 20M。

保存并重启apache2服务

service apache2 restart

请告诉我您的满意度:-)

重启服务器对我有帮助

shutdown -r now

最佳答案还有一点;需要添加

Include /etc/phpmyadmin/apache.conf

/etc/apache2/apache2.conf

并重新启动 Apache:

/etc/init.d/apache2 restart

使用 sudo apt-get dist-upgrade 更新服务器对我有用,然后重新启动 apache。

我认为这个问题是由于没有足够频繁地更新 phpmyadmin 引起的。

直到它在依赖本身中得到解决(在你的情况下是 php-gettext)并且你不想更改全局 PHP 设置以便你的其他东西不受影响你可能想要尝试通过放置

来自定义 PHPMyadmin 的 index.php
error_reporting( ~E_DEPRECATED & E_ALL );

在开头的某个地方或通过使用

php_value error_reporting 24575

在 .htdocs 或虚拟主机配置指令中。我认为后一种选择更好。

我以不同的方式解决了这个问题,因为我从较新的 Ubuntu:

下载了官方包
https://packages.ubuntu.com/search?keywords=phpmyadmin

然后安装它:

sudo dpkg -i phpmyadmin_4.6.6-5_all.deb

因此不必使用非官方存储库,稍后将简单地更新软件包。

问题是由过时的 PHP Class 构造函数语法引起的。要解决此问题 运行,请在您的终端上输入以下代码:

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

"Deprecation Notice" phpMyAdmin 登录页面上的消息

好的,这个问题通过编辑很容易解决 /etc/php/7.0/apache2/php.ini

error_reporting 值更改为:

error_reporting = ~E_DEPRECATED & E_ALL.   

默认在注释位置,取消注释再修改。

然后重启Apache

systemctl restart apache2

或第二个解决方案

apt-get purge phpmyadmin
apt-get install phpmyadmin

如果需要则安装

apt-get install php7.0-mbstring

然后重启Apache

systemctl restart apache2

嗯,"Deprecation Notice" 消息不再显示。

我遇到了同样的问题。在清除 phpmyadmin 并重新安装它之前,我只想提一下。尝试重新启动 Apache。就我而言,这是最简单的方法,我首先尝试了它。我只是想让人们节省时间。

 sudo service apache2 restart

当您之前 运行 的原始 PHP 版本与当前 PHP 服务器版本不匹配时,就会出现问题。根据您安装的 PHP 版本,这应该足够了。

sudo apt-get update
sudo apt-get install phpmyadmin php7.0-gettext php7.0-mbstring -y

我不想弄乱 php 安装,因此我刚刚重新启动了我的 Apache,它对我来说工作得很好。

"sudo service apache2 restart"

我遇到了同样的问题,none 这里提出的解决方案有效。

我的配置是 Ubuntu 16.04 和 php 7.

我解决了将 phpmyadmin 重新安装到最新版本 (5.02) 的问题。这个过程非常简单。通过重命名备份您的 phpmyadmin 文件夹('/usr/share/phpmyadmin/' 到 '/usr/share/phpmyadmin.bak/'),创建另一个文件夹 '/usr/share/phpmyadmin/',下载最新版本phpmyadmin 并将文件复制到新创建的文件夹“/usr/share/phpmyadmin/”中。您的版本现已升级。就我而言,弃用通知消失了。

该过程可能会引发一对其他错误,您可以按照本指南消除这些错误https://devanswers.co/manually-upgrade-phpmyadmin/

对于PHP 7.3+

编辑以下文件:config.inc.php。它可以位于 /etc/phpmyadmin/config.inc.php/usr/share/phpmyadmin/config.inc.php

/**
 * Whether or not to query the user before sending the error report to
 * the phpMyAdmin team when a JavaScript error occurs
 *
 * Available options
 * ('ask' | 'always' | 'never')
 * default = 'ask'
 */

$cfg['SendErrorReports'] = 'never';