Phppgadmin, объекты не найдены

Я пытаюсь получить свой локальный db в списке phpPgAdmin, но он говорит, что объект не найден phppgadmin GUI

Я уже настроил conf/config.inc

$conf['servers'][0]['desc'] = 'PostgreSQL'
$conf['servers'][0]['host'] = 'localhost';
$conf['servers'][0]['port'] = 5432;
$conf['owned_only'] = false;

Любая помощь, пожалуйста, я пробовал с версиями Postgresql 9.2,9.5,10.3 (не поддерживается phppgadmin?)


person Goran Grle    schedule 27.09.2018    source источник


Ответы (1)


ОБЪЯСНЕНИЕ ПРОБЛЕМЫ

Я вижу проблему! Это сообщение об ошибке является ошибкой в ​​коде phpPgAdmin, который, по-видимому, содержит более старый код, написанный до выпуска PHP 7.x.

Ошибка в phpPgAdmin появится, если вы недавно загрузили технологический стек со всеми последними версиями PHP, PostGreSQL и phpPgAdmin. Например... сегодняшние (февраль 2019 г.) последние версии:

  • PHP 7.3.1
  • PostGreSQL версии 11
  • phpPgAdmin 5.6 (12 ноября 2018 г.) ‹= Это не работает с PHP 7.x, но мы хотим, чтобы он работал с ним, и мы можем заставить его работать с ним!

PHP.net объясняет проблему в своем Конструкторы и деструкторы:

Предупреждение Конструкторы старого стиля УСТАРЕЛИ в PHP 7.0 и будут удалены в будущей версии. Вы всегда должны использовать __construct() в новом коде.

Их пример находится в этом разделе на этой странице:

Пример №2. Конструкторы в классах с пространством имен

<?php
namespace Foo;
class Bar {
    public function Bar() { <- This is an older style of creating a constructor.
        For PHP 7.x, it should be changed to "__construct" instead of "Bar".
        // treated as constructor in PHP 5.3.0-5.3.2
        // treated as regular method as of PHP 5.3.3
    }
}
?>

Теперь, когда мы знаем, в чем проблема, вот как ее решить.

РЕШЕНИЕ

Посмотрите в папку /phpPgAdmin/ на своем веб-сервере. В подпапке /classes/ вы должны найти следующие файлы:

  • ArrayRecordSet.php ‹ — заменить function ArrayRecordSet на function __construct
  • class.select.php ‹- Заменить function XHtmlSimpleElement на function __construct
  • Gui.php ‹ — заменить function GUI на function __construct
  • Misc.php ‹- Замените function Misc() на function __construct
  • Plugin.php ‹- Уже есть function __construct
  • PluginManager.php ‹ — уже есть function __construct

Отредактируйте эти файлы и измените любое из имен конструкторов, которые отображаются как повторяющиеся имена классов, на __construct.

Когда вы сохраните эти файлы и перезагрузите phpPgAdmin в своем браузере, вы увидите, что сообщение «Объекты не найдены» исчезнет. Затем он отобразит имя сервера.

Вуаля! Последняя версия phpPgAdmin 5.6 работает с последней версией PHP 7.3.1 и последней версией PostGreSQL 11!

Если вы хотите проверить XML-содержимое этого левого дерева, просто добавьте его к своему веб-сайту, так как это остальная часть URL-адреса, который он использует: /phppgadmin/servers.php?action=tree. Это поможет упростить отладку кода phpPgAdmin.

Вы также можете удалить параметр строки запроса action=tree. Или найдите его внутри кода phpMyAdmin.

ОТЧЕТ ОБ ОШИБКЕ

Я позабочусь о том, чтобы отправить отчет об ошибке phpPgAdmin со ссылкой на эту страницу. Надеюсь, кто-нибудь исправит эту ошибку в кодовой базе phpPgAdmin.

Получайте удовольствие, используя последнюю версию phpPgAdmin, PHP и PostGreSQL!

person Clomp    schedule 04.02.2019
comment
Пришлось также сделать это в нескольких местах в \libraries\adodb\adodb.inc.php - person curtisp; 11.05.2019
comment
А также решить проблему с каждым() https://sourceforge.net/p/phppgadmin/bugs/468/ - person curtisp; 11.05.2019
comment
Все эти изменения были добавлены в последнюю версию, которую вы можете найти по адресу . github.com/phppgadmin/phppgadmin/releases/tag/REL_7-12-0 - person xzilla; 29.09.2019