![](/img/trans.png)
[英]Unable to establish connection between PHP Cloud Foundry app and Postgre SQL in my IBM CLoud
[英]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.