gpt4 book ai didi

PHP 连接到 Postgresql 错误

转载 作者:搜寻专家 更新时间:2023-10-31 22:02:54 25 4
gpt4 key购买 nike

我以前从未连接过 PostgreSQL 数据库,所以这是全新的领域。我正在创建我们在办公室为我们创建的桌面应用程序的内部网版本。我目前安装了桌面应用程序,它可以毫无问题地连接到 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 脚本时,错误提示 SSL“关闭”,即使我已将其设置为 true,但我不知道如何更改它。我试过像在 ODBC 数据源管理器中那样“要求”,但无济于事。对我来说,错误(SSL 问题除外)似乎没有意义。我可以在我的计算机上以两种不同的方式连接到 PostgreSQL 数据库:桌面​​应用程序和 ODBC 数据源管理器。因此,没有主机“10.0.1.218”条目的问题在我看来应该不是问题。我也曾尝试将我使用的驱动程序从 PostgreSQL Unicode 更改为 PostgreSQL ANSI,但这也不成功。

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

;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 设置有关。我只是不知道为什么/如何....啊...

最佳答案

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

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

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

关于PHP 连接到 Postgresql 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24827808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com