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';
我安装了 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.phperror_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';