致命!用户postgres验证失败,倍数操作系统,没有工作

问题描述:

这是我第一次使用Apache,php和postgresql。这是我做过什么:致命!用户postgres验证失败,倍数操作系统,没有工作

  • 我安装PostgreSQL的,WAPPÿpgadmin3,
  • 我复制与我的阿帕奇/ htdocs中的项目文件,
  • 打开索引,并尝试在用户帐户的进入我的网站,但它说:

"Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[08006] [7] FATAL: the authentication failed for the user «'postgres'»' in C:\Bitnami\wappstack-5.5.27-0\apache2\htdocs\PROJECT\formss\class\connection.php:31 Stack trace: #0 C:\Bitnami\wappstack-5.5.27-0\apache2\htdocs\PROJECT\forms\class\connection.php(31): PDO->__construct('pgsql:host=127....', ''postgres'', ''12345'') #1 C:\Bitnami\wappstack-5.5.27-0\apache2\htdocs\PROJECT\forms\actions\user_login.php(6): connection->__construct() #2 {main} thrown in C:\Bitnami\wappstack-5.5.27-0\apache2\htdocs\PROJECT\forms\class\conection.php on line 31"

,我为用户postgress设置的通行证是在每一个步骤12345。 Pgadmin3让我改变分贝内的一切。

我已经尝试了所有这些在Ubuntu中,但没有堆栈,它说的一样。我检查了postgresql的配置,看到所有用户都说md5就像很多人在其他问题中提出的一样(是的,我搜索并尝试了很多解决方案,但它们不适用于我)。

真正的问题是,使用完全相同的文件,该项目在我的办公室工作,现在使用Windows 7,全新安装W7和Ubuntu 14.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); 
     } 
    } 
?> 
+0

@halfer完成了,就是代码! – Sophie

+0

啊,用户名和密码都用单引号括起来 - 你确定这是必要的吗? – halfer

+0

@halfer不确定,因为我没有写这部分,但正如我所说,在我的办公室工作。你如何建议我改变它? – Sophie

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

 $this->db=new PDO("pgsql:host=".$this->host. 
      ";port=".$this->port. 
      ";dbname=".$this->database 
      ,"'".$this->user."'" 
      ,"'".$this->pass."'"); 

这是非常不寻常的包的用户名和引号中的密码,我从来没有看到过这个。我们在评论中发现,删除引号让连接再次运行。

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

这也是值得接近这个代码的作者,以防他们有一些你不知道的系统知识。我希望这个不寻常的代码已经被评论,所以讨论它可能是下一个最好的事情。