繁体   English   中英

PHP连接到Postgre SQL错误

[英]PHP Connection to Postgre SQL Error

我以前从未连接过PostgreSQL数据库,所以这是全新的领域。 我正在创建我们在办公室为我们创建的桌面应用程序的Intranet版本。 我目前安装了桌面应用程序,它连接到PostgreSQL数据库(在网络服务器上),没有任何打嗝。 我已经安装了PostgreSQL odbc驱动程序,当我在控制面板中使用ODBC数据源管理器来测试连接时,我得到了一个成功的测试连接。 我的问题是当我尝试使用所有相同的信息直接通过PHP脚本连接时。 我收到此错误:

Warning: odbc_connect(): SQL error: FATAL: no pg_hba.conf entry for host "10.0.1.218", user "", database "", SSL off, SQL state 28000 in SQLConnect

我知道我可以去服务器并更改连接设置(如果IT允许我对服务器的文件进行更改...不指望那个)。

我的设置是:Windows XP,XAMPP v.1.8.2,PHP 5.4,Postgre SQL驱动程序9.03.03。 我通过ODBC数据源管理器获取的连接信息是:

Data Source - PostgreSQL
Database - db
Server - 10.0.0.149
User Name - user
SSL Mode - require
Port - 5432
Password - password
Driver - PostgreSQL Unicode

桌面应用程序的连接字符串是:

sDeeperConnection = "Server=10.0.0.149;Database=db;User Id=user;Password=password;SSL=true;Pooling=false";

我在PHP中创建的连接字符串是:

$dsn='10.0.0.149';
$username='user';
$password='password';
$dbname='db';

$odb = odbc_connect("Driver={PostgreSQL Unicode};Server=$dsn;SSL=true;Pooling=false;Port=5432;Database=$dbname;", $username, $password);

我确实注意到,当我运行PHP脚本时出现错误,即使我将其设置为true,但SSL'off',但我不知道如何更改它。 我在ODBC数据源管理器中尝试过'require',但无济于事。 对我来说,似乎错误(SSL问题除外)没有意义。 我可以在计算机上以两种不同的方式连接到PostgreSQL数据库:桌面​​应用程序和ODBC数据源管理器。 因此,没有主持人'10 .0.1.218'的条目的问题在我看来应该是一个非问题。 我也尝试将我使用的驱动程序从PostgreSQL Unicode更改为PostgreSQL ANSI,但这也是不成功的。

我已经尝试在删除后使用带有相同连接参数的pg_connect()函数; 从这些行php.ini:

;extension=php_pdo_pgsql.dll
;extension=php_pgsql.dll

但是我收到了同样的错误。 我认为它与SSL有关,但我不知道从哪里开始使用SSL测试/调试连接。 这个问题有点困难,因为我无法访问服务器并且获取更改文件的权限就像拔钉子一样。

任何想法或其他选择都会很棒! 提前谢谢!

编辑查看我的phpinfo这是我看到的:

pgsql
PostgreSQL Support  enabled
PostgreSQL(libpq) Version   8.3.3
PostgreSQL(libpq)   PostgreSQL 8.3.3, compiled by Visual C++ build 1500
Multibyte character support     enabled
SSL support     enabled
Active Persistent Links     0
Active Links    0 

openssl
OpenSSL support     enabled
OpenSSL Library Version     OpenSSL 0.9.8y 5 Feb 2013
OpenSSL Header Version  OpenSSL 0.9.8y 5 Feb 2013 

再次编辑

我根据下面的评论下载了pgAdmin III并设置了连接,我连接得很好。 所以我知道这不是东道主。 我猜这是SSL设置的一部分。 我只是不知道为什么/怎么......唉......

在针对类似但不同的问题进行了大量挖掘和阅读大量解决方案之后,我遇到了一个建议,即有人将libpq.dll从我的c:\\xampp\\php文件夹复制到我的C:\\xampp\\apache\\bin夹。 我不得不覆盖该目录中现有的libpq.dll文件。 然后我又得到了一个错误:

pg_connect(): Unable to connect to PostgreSQL server: FATAL: password authentication failed for user

在更多地阅读随机问题后,其他人遇到了一个问题,无论使用或未使用密码,都会创建连接。 所以,我决定在连接字符串中取出密码并且它有效! 感谢所有评论并让我一直在寻找解决方案的人!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM