我试图在phpPgAdmin中列出我的本地主机db,但它说没有找到对象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不支持?)

最佳答案

问题的解释
我看到问题了!此错误消息是phpPgAdmin代码中的一个错误,该代码显然包含在PHP 7.x发布之前编写的旧代码。
如果您最近下载了包含所有最新版本的PHP、PostGreSQL和phpPgAdmin的技术堆栈,则phpPgAdmin中的错误将出现。例如。。。今天(2019年2月)的最新版本是:
菲律宾比索7.3.1
PostGreSQL版本11
phpPgAdmin 5.6(2018年11月12日)PHP.net在他们的Constructors and Destructors页面中解释了问题:
警告:在PHP 7.0中不推荐使用旧式构造函数,并且
在以后的版本中删除。您应该始终在
新代码。
他们的例子就在这一页的这一部分:
示例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
    }
}
?>

现在我们知道了问题所在,下面是如何解决的。
解决方案
在web服务器上的/phpPgAdmin/文件夹中查找。您应该在/classes/子文件夹中找到以下文件:
ArrayRecordSet.phpfunction ArrayRecordSet替换为function __construct
class.select.phpfunction XHtmlSimpleElement替换为function __construct
Gui.phpfunction GUI替换为function __construct
Misc.phpfunction Misc()替换function __construct
Plugin.phpfunction __construct
PluginManager.phpfunction __construct
编辑这些文件并将任何构造函数名称(显示为重复类名)更改为__construct
当您在浏览器中保存这些文件并重新加载phpPgAdmin时,您将看到“未找到对象”消息将消失。然后将显示服务器名称。
喂!phpPgAdmin 5.6的最新版本与PHP 7.3.1的最新版本以及PostGreSQL 11的最新版本一起工作!
如果您想检查左树的XML内容,只需将其附加到您的网站,因为它使用的是URL的其余部分:/phppgadmin/servers.php?action=tree。这将有助于使调试phpPgAdmin代码更容易。
您还可以删除action=treequerystring参数。或者在phpMyAdmin代码中搜索它。
错误报告
我将看到关于提交一个phpPgAdmin bug report到与此页的链接。希望有人能在phpPgAdmin代码库中修复这个错误。
使用最新版本的phpPgAdmin、PHP和PostGreSQL,玩得开心!

关于php - Phppgadmin,找不到对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52537682/

10-11 03:09