Php 致命的!用户postgres的身份验证失败,多个操作系统,没有任何工作

Php 致命的!用户postgres的身份验证失败,多个操作系统,没有任何工作,php,windows,apache,postgresql,ubuntu,Php,Windows,Apache,Postgresql,Ubuntu,这是我第一次使用Apache、php和postgresql。这就是我所做的: 我安装了postgresql,wapp y pgadmin3 我用apache/htdocs复制了这个文件和我的项目 打开索引并尝试输入my web的用户帐户,但它显示: “致命错误:未捕获的异常'PDOException',消息'SQLSTATE[08006][7]致命:在C:\Bitnami\wappstack-5.5.27-0\apache2\htdocs\PROJECT\formss\class\conne

这是我第一次使用Apache、php和postgresql。这就是我所做的:

  • 我安装了postgresql,wapp y pgadmin3
  • 我用apache/htdocs复制了这个文件和我的项目
  • 打开索引并尝试输入my web的用户帐户,但它显示:
“致命错误:未捕获的异常'PDOException',消息'SQLSTATE[08006][7]致命:在C:\Bitnami\wappstack-5.5.27-0\apache2\htdocs\PROJECT\formss\class\connection.php:31堆栈跟踪:#0 C:\Bitnami\wappstack-5.5.27-0\apache2\htdocs\PROJECT\forms\class\connection.php(31):PDO->uu-construct('pgsql:host=127….','postgres'','12345'')#1c:\Bitnami\wappstack-5.5.27-0\apache2\htdocs\PROJECT\forms\actions\user\u login.php(6):在第31行的C:\Bitnami\wappstack-5.5.27-0\apache2\htdocs\PROJECT\forms\class\consection.php中抛出连接->uu-construct()

我为用户postgres设置的过程在每一步中都是12345。Pgadmin3允许我更改数据库中的所有内容

我已经在Ubuntu中尝试了所有这些,但是没有堆栈,它也这么说。我检查了postgresql的配置,发现所有用户都说md5,就像很多人在其他问题中提出的那样(是的,我搜索并尝试了许多解决方案,但它们对我不起作用)

真正的问题是,使用完全相同的文件,项目在我的办公室工作,使用Windows7,现在,使用W7和Ubuntu14.04的干净安装,不需要任何东西

这是连接代码:

 <?php
    class connection {
        private $database;
        private $host;
        private $port;
        private $user;
        private $pass;
        public $db;
        public function __construct(){
            $this->user='postgres';
            $this->pass='12345';
            $this->host='localhost';
            $this->database='project';
            $this->port=5432;
            $this->db=new PDO("pgsql:host=".$this->host.
                ";port=".$this->port.
                ";dbname=".$this->database
                ,"'".$this->user."'"
                ,"'".$this->pass."'");
            $this->db->exec("SET CHARACTER SET utf8");
            return $this->db;
        }
        public function __clone(){
            trigger_error('The clone is not allowed', E_USER_ERROR);
        }
    }
?>

根据评论讨论,创建数据库连接的代码似乎有问题:

        $this->db=new PDO("pgsql:host=".$this->host.
            ";port=".$this->port.
            ";dbname=".$this->database
            ,"'".$this->user."'"
            ,"'".$this->pass."'");
将用户名和密码用引号括起来是非常不寻常的,我以前从未见过这种情况。我们在评论中发现,删除引号使连接重新工作

您可能希望与同事讨论为什么办公室中的数据库服务器使用这种不寻常的方法。用户帐户可能以某种方式被禁用,可能是因为它是一个仅限局域网的数据库,并且允许所有连接


如果他们对系统有一些您不了解的知识,那么也值得与代码的作者联系。我希望这段不寻常的代码已经被注释过,因此讨论它可能是下一件最好的事情。

根据注释讨论,创建数据库连接的代码似乎有问题:

        $this->db=new PDO("pgsql:host=".$this->host.
            ";port=".$this->port.
            ";dbname=".$this->database
            ,"'".$this->user."'"
            ,"'".$this->pass."'");
将用户名和密码用引号括起来是非常不寻常的,我以前从未见过这种情况。我们在评论中发现,删除引号使连接重新工作

您可能希望与同事讨论为什么办公室中的数据库服务器使用这种不寻常的方法。用户帐户可能以某种方式被禁用,可能是因为它是一个仅限局域网的数据库,并且允许所有连接


如果他们对系统有一些您不了解的知识,那么也值得与代码的作者联系。我希望这段不同寻常的代码会被注释,所以讨论它可能是下一个最好的事情。

@halfer done,这就是代码!啊,用户名和密码用单引号括起来-你确定这是必要的吗?@halfer不确定,因为我没有写那部分,但正如我所说,在我的办公室工作。您建议我如何更改它?将“
””、“$this->user.”“
交换为“
$this->user”,密码也是如此。我以前从未见过这种指定数据库凭据的方法-也许您的office数据库设置为完全忽略用户名/密码?不确定。老实说,它不应该像现在这样工作。@halfer-OMG它在W7和Ubuntu中工作过!!!谢谢非常感谢你!!我不知道你是不是男人,但我可以用任何一种方式吻你!!>新问题,我如何关闭我的答案或选择您的评论作为答案?@halfer done,这就是代码!啊,用户名和密码用单引号括起来-你确定这是必要的吗?@halfer不确定,因为我没有写那部分,但正如我所说,在我的办公室工作。您建议我如何更改它?将“
””、“$this->user.”“
交换为“
$this->user”,密码也是如此。我以前从未见过这种指定数据库凭据的方法-也许您的office数据库设置为完全忽略用户名/密码?不确定。老实说,它不应该像现在这样工作。@halfer-OMG它在W7和Ubuntu中工作过!!!谢谢非常感谢你!!我不知道你是不是男人,但我可以用任何一种方式吻你!!>新问题,我如何关闭我的答案或选择您的评论作为答案?