Phppgadmin,找不到对象

时间:2018-09-27 13:04:21

标签: php postgresql phppgadmin

我正在尝试在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不支持?)

1 个答案:

答案 0 :(得分:2)

问题的解释

我看到了问题!此错误消息是phpPgAdmin代码中的错误,该错误显然具有在 PHP 7.x发布之前编写的旧代码。

如果您最近下载了包含所有最新版本的PHP,PostGreSQL和phpPgAdmin的技术堆栈,则会出现phpPgAdmin错误。例如...今天(2019年2月)的最新版本是:

  • PHP 7.3.1
  • PostGreSQL版本11
  • phpPgAdmin 5.6(2018年11月12日)<=这不适用于PHP 7.x,但是我们希望它可以与之一起使用并且可以使其与之一起使用!

PHP.net在其Constructors and Destructors页面上解释了该问题:

  

警告旧样式的构造函数在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时,您将看到“未找到对象”消息将消失。然后将显示服务器名称。

Voilà!最新版本的phpPgAdmin 5.6可与最新版本的PHP 7.3.1和最新版本的PostGreSQL 11配合使用!

如果要检查该左树的XML内容,只需将其附加到您的网站上,因为这是URL的其余部分,它使用的是/phppgadmin/servers.php?action=tree。这将有助于使调试phpPgAdmin代码更容易。

您还可以删除action=tree querystring参数。或在phpMyAdmin代码中搜索它。

错误报告

我将看到有关将phpPgAdmin bug report提交到此页面的链接的信息。希望有人会在phpPgAdmin代码库中解决此错误。

使用最新版本的phpPgAdmin,PHP和PostGreSQL玩乐吧!