带有phpmyadmin的PHP 7提供了大量的弃用通知

yoa*_*ano 57 phpmyadmin php-7 ubuntu-16.04

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

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)
Run Code Online (Sandbox Code Playgroud)

这是一个问题吗?如何摆脱这些通知(每次加载页面或执行操作时它们会弹出)?

小智 107

我有这个问题,并通过简单重新安装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
Run Code Online (Sandbox Code Playgroud)

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

  • 这最初对我有用.然而,大约两周后,弃用通知开始回归. (15认同)
  • + sudo服务apache2 restart;) (10认同)
  • 虽然被接受,但这个答案对我不起作用.提供给[此答案](https://askubuntu.com/a/796705/305040)(最初由*user123943*提供)的链接确认此*确实是由`php-gettext`中的错误*引起的弃用通知只是告诉你这个.在更新`php-gettext`以使用与PHP 7.0兼容的类构造函数之前,重新安装将无法工作. (9认同)
  • 为我工作.注意:我在安装提示中选择了"否",关于删除/替换db公共数据库配置,以保留现有的配置设置.无需其他设置. (7认同)
  • `services`?只需`service`:`sudo service apache2 restart`或`sudo systemctl restart apache2.service`来刷新apache服务器. (2认同)
  • 正如@FreeRadical 所说,这不起作用,也不应该是公认的答案——这只是一个短期/临时修复。是的,它可能会在第一次会话登录时清理它,但稍后您会收到相同的通知。尝试注销/关闭浏览器 - 重新启动会话。多。想一想:问题不在于 phpmyadmin:它是 php-gettext/ - 这个答案简单地重新安装了同样已弃用的 php-gettext (2认同)

小智 68

我解决这个问题的方法是在phpmyadmin中使用16.04跟随折旧通知错误的askubuntu指令.它涉及更改/usr/share/php/php-gettext/streams.php中的三行和/usr/share/php/php-gettext/gettext.php中的一行.

从该链接,这是您需要做的更改(如果您有ubuntu 16.04):

sudo nano /usr/share/php/php-gettext/streams.php
Run Code Online (Sandbox Code Playgroud)

第48行StringReader错误.

转到第52行并进行更改

function StringReader ($str='') {
Run Code Online (Sandbox Code Playgroud)

function __construct($str='') {
Run Code Online (Sandbox Code Playgroud)

第84行FileReader错误

转到第90行并进行更改

function FileReader($filename) {
Run Code Online (Sandbox Code Playgroud)

function __construct($filename) {
Run Code Online (Sandbox Code Playgroud)

第145行CacheFileReader错误

转到第146行并进行更改

function CachedFileReader($filename) {
Run Code Online (Sandbox Code Playgroud)

function __construct($filename) {
Run Code Online (Sandbox Code Playgroud)

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

第36行gettext_reader {错误

我认为你现在得到了要点,转到第101行并改变

function gettext_reader($Reader, $enable_cache = true) {
Run Code Online (Sandbox Code Playgroud)

function __construct($Reader, $enable_cache = true) {
Run Code Online (Sandbox Code Playgroud)

  • 像魅力一样工作,然后执行“ sudo service nginx restart”。Apache用户将_nginx_替换为_apache2_ (3认同)
  • 手动更改程序包中的代码?这闻起来像一个可怕的骇客。 (3认同)

小智 40

您可以使用另一个PPA用于phpmyadmin.这是PPA链接

sudo add-apt-repository ppa:nijel/phpmyadmin
sudo apt update
sudo apt install phpmyadmin
Run Code Online (Sandbox Code Playgroud)

因为它只是一个临时解决方案或不是最佳解决方案,直到ubuntu repos中的phpmyadmin包重建.


小智 25

您可以通过设置访问功能表单轻松完成此操作

http://<localhost>/phpmyadmin/prefs_forms.php?form=Features
Run Code Online (Sandbox Code Playgroud)

选择将错误报告发送至 NEVER

选择将错误报告发送至 NEVER


ben*_*inp 24

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

  • 抑制警告是解决方案还是解决方法?在为某些目的添加了所有警告之后.对? (5认同)
  • @beniaminp有两种类型的弃用通知[E_DEPRECATED](http://php.net/manual/en/errorfunc.constants.php#errorfunc.constants.errorlevels.e-deprecated-error)和[E_USER_DEPRECATED](http:/ /php.net/manual/en/errorfunc.constants.php#errorfunc.constants.errorlevels.e-user-deprecated).在某些配置中,您可能需要禁用它们以停止PHPMyadmin中的警告. (3认同)

小智 17

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

sudo apt-get dist-upgrade
Run Code Online (Sandbox Code Playgroud)

  • 然而:`sudo apt-get dist-upgrade`和它的新变种`sudo apt-get full-upgrade`并不适合所有人.这些命令很危险,可能会破坏您的系统(它确实发生在我身上).只是我的两分钱. (3认同)

Ant*_*tin 16

对于 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';
Run Code Online (Sandbox Code Playgroud)


Myc*_*ect 6

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

 sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)


Isa*_*tch 5

你没有提到你使用的是哪个版本的phpMyAdmin,也没有提到它的安装位置,但它似乎是Ubuntu打包版本4.5.4.1或来自源的相当陈旧且不受支持的版本.无论哪种方式,我相信您的问题已在https://github.com/phpmyadmin/phpmyadmin/issues/11462报告(并修复)- 如果您使用的是Ubuntu打包版本,则其中的评论显示nijel PPA版本应该为你做得更好.

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