Ошибка уведомления об амортизации в phpmyadmin с 16.04
Я получаю ошибки при запуске 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)
it continues with these as well with the same backtrace as above:
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. Любые мысли о разрешении
4 ответа
Это зависит от того, достаточно ли вы предприимчивы. Если вы понимаете ошибку, это означает, что ваш 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
декларация.
Вы должны увидеть около 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
,
Линия 36 gettext_reader {
ошибка
Я думаю, вы понимаете суть сейчас, перейдите к строке 101 и измените
function gettext_reader($Reader, $enable_cache = true) {
к
function __construct($Reader, $enable_cache = true) {
Поскольку у меня пока недостаточно репутации, чтобы комментировать замечательный ответ 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
Вы можете использовать другой PPA для phpmyadmin. Вот это PPA Link
sudo add-apt-repository ppa:nijel/phpmyadmin
sudo apt update
sudo apt install phpmyadmin
Так как это только временное решение или не оптимальное, пока пакет phpmyadmin в репозиториях Ubuntu не будет перестроен.
Это уведомление об устаревании "на странице входа в систему проблема phpMyAdmin легко решается путем редактирования файла php.ini по адресу /etc/php/7.0/apache2/php.ini
Измените значение error_reporting на:
error_reporting = ~E_DEPRECATED & E_ALL
По умолчанию это позиция комментария, поэтому раскомментируйте ее и измените.
Затем перезапустите Apache:
sudo systemctl restart apache2