[Решено] phpPgAdmin - настройка (phpPgAdmin прекращает работу при попытке соединения с БД)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модератор: SLEDopit

Аватара пользователя
ormorph
Сообщения: 1770
ОС: Gentoo

[Решено] phpPgAdmin - настройка

Сообщение ormorph »

Всем привет.
После запуска phpPgAdmin, при попытке соединиться с БД, выскакивает сообщение в браузере:

Код: Выделить всё

Virtual Class -- cannot instantiate
Прогнав grep-ом нашёл эту строчку в файле libraries/adodb/adodb.inc.php, в методе:

Код: Выделить всё

        function __construct()
        {
                die('Virtual Class -- cannot instantiate');
        }
Соответственно если закомментировать эту строчку, то phpPgAdmin работает нормально, соединение с БД проходит успешно.
Может я чего не понимаю, но какого в конструкторе класса сделали вызов функции die()?
Последний раз редактировалось ormorph 08.03.2021 09:03, всего редактировалось 1 раз.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18483
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: phpPgAdmin - настройка

Сообщение Bizdelnick »

ormorph писал(а):
07.03.2021 19:20
Может я чего не понимаю, но какого в конструкторе класса сделали вызов функции die()?
Раз это "виртуальный" класс, видимо, его конструктор не должен вызываться. Должен вызываться конструктор наследующего класса. (PHP не знаю и не особо хочу.)
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
UnixNoob
Сообщения: 578
ОС: Slackware

Re: phpPgAdmin - настройка

Сообщение UnixNoob »

ormorph
Не знаю ваш был запрос на stackoverflow или нет, но там дали ссылку на гит.
И там тоже просто удалили строку, на сколько я понял.
Спасибо сказали:

Аватара пользователя
devilr
Сообщения: 3144
ОС: Mandriva => Gentoo (~amd64)

Re: phpPgAdmin - настройка

Сообщение devilr »

Удалить то не сложно и даже работать будет. :) Но, замысел, видимо, был другим, раз автор сделал тот класс виртуальным.
Кстати, то самое "die" часто используется в JAVA-классах. Цель та же самая - правильное наследование.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18483
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: phpPgAdmin - настройка

Сообщение Bizdelnick »

UnixNoob писал:
07.03.2021 22:15
И там тоже просто удалили строку, на сколько я понял.
Пехепешники такие пехепешники…
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 1770
ОС: Gentoo

Re: phpPgAdmin - настройка

Сообщение ormorph »

Bizdelnick писал:
07.03.2021 21:46
Раз это "виртуальный" класс, видимо, его конструктор не должен вызываться.
Ну да, посмотрел класс ADOConnection наследует класс ADODB_postgres64, а там используется устаревшее название конструктора, добавил в него новый вариант:

Код: Выделить всё

          function __construct()
          {

          }
И все заработало.
Тогда понимаю, почему не принят PR #118, там автор удалил эти строчки, что скорее всего не очень то хорошо. Видно переход на php8 несколько болезненный. Хотя php7 все время должен был ругаться на устаревшее название конструктора.
Спасибо сказали:

Аватара пользователя
UnixNoob
Сообщения: 578
ОС: Slackware

Re: [Решено] phpPgAdmin - настройка

Сообщение UnixNoob »

ormorph писал(а):
08.03.2021 08:28
Видно переход на php8 несколько болезненный. Хотя php7 все время должен был ругаться на устаревшее название конструктора.
При смене версии php меняется синтаксис конструкторов? Как часто такие перемены?
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 1770
ОС: Gentoo

Re: [Решено] phpPgAdmin - настройка

Сообщение ormorph »

UnixNoob писал:
08.03.2021 11:37
При смене версии php меняется синтаксис конструкторов? Как часто такие перемены?
Время от времени происходят, например при переходе с php5 изменился драйвер доступа к mysql. Это не относится к синтаксису конструкторов. В данном случае изменилось название конструктора класса, ранее оно совпадало с названием класса, теперь это зарезервированное имя, возможно это сделано для ускорения работы php. Но php7 уже использовал новое название конструктора и при наличии старого выбирал вариант нового. В php8 старый вариант конструктора был полностью удалён.
Спасибо сказали:

Аватара пользователя
ormorph
Сообщения: 1770
ОС: Gentoo

Re: [Решено] phpPgAdmin - настройка

Сообщение ormorph »

Пересмотрел, а не тут то было, это ещё не все недочёты. Для нормальной работы под php8 понадобилось ещё изменить строчку. Базы данных редактировались, но не создавались. Теперь вроде как все работает.
Патч изменений:
Spoiler

Код: Выделить всё

--- a/all_db.php        2020-11-07 09:09:12.000000000 +0300
+++ b/all_db.php        2021-03-08 17:44:57.760262808 +0300
@@ -199,7 +199,7 @@
                echo "\t\t<td class=\"data1\">\n";
                echo "\t\t\t<select name=\"formEncoding\">\n";
                echo "\t\t\t\t<option value=\"\"></option>\n";
-               while (list ($key) = each ($data->codemap)) {
+               foreach ($data->codemap as $key => $value) {
                    echo "\t\t\t\t<option value=\"", htmlspecialchars($key), "\"",
                                ($key == $_POST['formEncoding']) ? ' selected="selected"' : '', ">",
                                $misc->printVal($key), "</option>\n";
--- a/libraries/adodb/drivers/adodb-postgres64.inc.php  2020-11-07 09:09:12.000000000 +0300
+++ b/libraries/adodb/drivers/adodb-postgres64.inc.php  2021-03-08 08:08:31.886314599 +0300
@@ -122,6 +122,11 @@
        // changes the metaColumnsSQL, adds columns: attnum[6]
        }

+       function __construct()
+       {
+       // changes the metaColumnsSQL, adds columns: attnum[6]
+       }
+
        function ServerInfo()
        {
                if (isset($this->version)) return $this->version;
phpPgAdmin-7.13.0-php8.patch
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали: