Ошибка «Уведомление об устаревании» в phpmyadmin с 16.04

11

Я получаю ошибки при запуске phpmyadmin в 16.04:

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. Есть мысли по решению?

tseward
источник
В этом уроке говорится, что вам нужно включить mcryptи mbstringphp модули и перезапустить apache. Ты сделал это?
Бистоко
да я обновил mcrypt и mbstring и перезапустил apache.
июня
Я рекомендую [скачать пакет напрямую] ( phpmyadmin.net/downloads ), который подходит для ваших версий php / mysql, для устранения неполадок.
Бистоко

Ответы:

29

Это зависит от того, достаточно ли вы предприимчивы. Если вы понимаете ошибку, это означает, что ваш 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должна быть идентична myclassnameобъявлению CLASS .

Вы должны увидеть около 4 ошибок, если вы используете Ubuntu 16.04 с последним gettext. Я просто изменяю это, и это не вредно для вашей системы. Это устаревший программный синтаксис, и если вы обновитесь в будущем, вы тоже не столкнетесь с какой-либо проблемой. Я скажу, что это безопасное редактирование.

На самом деле это не серьезное изменение или что-то еще, просто обновление синтаксиса. Если вы устанавливаете из пакета 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.

gettext_reader {Ошибка строки 36

Я думаю, вы понимаете суть сейчас, перейдите к строке 101 и измените

function gettext_reader($Reader, $enable_cache = true) {

к

function __construct($Reader, $enable_cache = true) {
Кто-то особенный
источник
2
надо видеть: sudo nano /usr/share/php/php-gettext/gettext.phpиsudo nano /usr/share/php/php-gettext/streams.php
Technico.top
упакованные файлы относятся к 20101225. Таким образом, несмотря на то, что хранение резервных копий - это то, что вы делаете - всегда - вы должны быть в безопасности от обновления пакета, в котором исправлено ваше исправление, все обновления должны содержать это исправление сами!
Flowtron
8

Поскольку у меня пока недостаточно репутации, чтобы комментировать замечательный ответ Someone Special , я просто отвечу вместо этого.

Вот однострочные команды, которые выполняют предлагаемые правки:

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
Бинарный код
источник
сэкономил мне немного времени там ... спасибо, мужчина :-)
Адам
5

Вы можете использовать другой PPA для phpmyadmin. Вот это PPA Link

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

Так как это только временное решение или не оптимальное, пока пакет phpmyadmin в репозиториях Ubuntu не будет перестроен.

Дипаншу Джайн
источник
1
Это помогло мне, хотя
Шашанк Саксена
Будьте осторожны, этот ppa не получал никаких обновлений более года.
Лоран
0

Это уведомление об устаревании »на странице входа в систему проблема phpMyAdmin легко решается путем редактирования файла php.ini по адресу /etc/php/7.0/apache2/php.ini

Измените значение error_reporting на:

error_reporting = ~E_DEPRECATED & E_ALL     

По умолчанию это позиция комментария, поэтому раскомментируйте ее и измените.

Затем перезапустите Apache:

sudo systemctl restart apache2
Шрикант Верма
источник