"FATAL: no pg_hba.conf entry for host" 但我可以通过 pgAdmin 连接
"FATAL: no pg_hba.conf entry for host" but I can connect trough pgAdmin
我在使用基于 CakePHP 的项目的开发环境时遇到了一些问题。
问题是,CakePHP 可以在生产环境中连接,但是如果我 运行 在我的 PC 上通过 XAMPP,然后抛出一个
FATAL: no pg_hba.conf entry for host "myexternalip", user "dbuser", database "dbname", SSL off
但使用相同的参数,我可以通过 pgAdmin 从我的 PC 连接。
我尝试了一些我发现的谷歌搜索技巧,比如将 libpq.dll
从 c:\xampp\php
复制到 c:\xampp\apache\bin
但是,运气不好,检查了 pnp.ini
和extension=php_pdo_pgsql.dll
行未注释,曾多次尝试重启 apache 但没有任何变化
项目托管在heroku平台下,我的/app/config/database.php
长得像
public $production = array(
'datasource' => 'Database/Postgres',
'persistent' => false,
'host' => 'anywhere.at.amazonaws.com',
'login' => 'dbuser',
'password' => 'dbpwd',
'database' => 'dbname',
'encoding' => 'utf8',
);
这是堆栈跟踪
- CORE\Cake\Model\Datasource\DboSource.php line 260 → Postgres->connect()
- CORE\Cake\Model\ConnectionManager.php line 105 → DboSource->__construct(array)
- CORE\Cake\Model\Model.php line 3613 → ConnectionManager::getDataSource(string)
- CORE\Cake\Model\Model.php line 1155 → Model->setDataSource(string)
- CORE\Cake\Model\Model.php line 3640 → Model->setSource(string)
- CORE\Cake\Model\Model.php line 827 → Model->getDataSource()
谁能给我另一个有用的提示?
过了一会儿我找到了解决办法。
问题是这并不简单。
由于Postgres服务器托管在heroku平台下,服务器默认配置是require
ssl,所以我遇到了这样的配置:
public $production = array(
......
'sslmode' => 'require',
);
现在错误已更改为 sslmode value "require" invalid when ssl support is not compiled
然后我用谷歌搜索了一下,似乎至少在 XAMPP v5.5.19 下,PHP 文件夹中的 libpq.dll
没有使用 ssl 支持编译
这是帮助我解决这个问题的问题:
How to installPostgreSQL client library for PHP on Windows with SSL enabled
似乎 pgAdmin 的 libpq.dll
是用 ssl 支持编译的,所以这就是我可以通过 pgAdmin 连接,而不是 php
的原因
感谢大家的帮助!
我在使用基于 CakePHP 的项目的开发环境时遇到了一些问题。
问题是,CakePHP 可以在生产环境中连接,但是如果我 运行 在我的 PC 上通过 XAMPP,然后抛出一个
FATAL: no pg_hba.conf entry for host "myexternalip", user "dbuser", database "dbname", SSL off
但使用相同的参数,我可以通过 pgAdmin 从我的 PC 连接。
我尝试了一些我发现的谷歌搜索技巧,比如将 libpq.dll
从 c:\xampp\php
复制到 c:\xampp\apache\bin
但是,运气不好,检查了 pnp.ini
和extension=php_pdo_pgsql.dll
行未注释,曾多次尝试重启 apache 但没有任何变化
项目托管在heroku平台下,我的/app/config/database.php
长得像
public $production = array(
'datasource' => 'Database/Postgres',
'persistent' => false,
'host' => 'anywhere.at.amazonaws.com',
'login' => 'dbuser',
'password' => 'dbpwd',
'database' => 'dbname',
'encoding' => 'utf8',
);
这是堆栈跟踪
- CORE\Cake\Model\Datasource\DboSource.php line 260 → Postgres->connect()
- CORE\Cake\Model\ConnectionManager.php line 105 → DboSource->__construct(array)
- CORE\Cake\Model\Model.php line 3613 → ConnectionManager::getDataSource(string)
- CORE\Cake\Model\Model.php line 1155 → Model->setDataSource(string)
- CORE\Cake\Model\Model.php line 3640 → Model->setSource(string)
- CORE\Cake\Model\Model.php line 827 → Model->getDataSource()
谁能给我另一个有用的提示?
过了一会儿我找到了解决办法。
问题是这并不简单。
由于Postgres服务器托管在heroku平台下,服务器默认配置是require
ssl,所以我遇到了这样的配置:
public $production = array(
......
'sslmode' => 'require',
);
现在错误已更改为 sslmode value "require" invalid when ssl support is not compiled
然后我用谷歌搜索了一下,似乎至少在 XAMPP v5.5.19 下,PHP 文件夹中的 libpq.dll
没有使用 ssl 支持编译
这是帮助我解决这个问题的问题: How to installPostgreSQL client library for PHP on Windows with SSL enabled
似乎 pgAdmin 的 libpq.dll
是用 ssl 支持编译的,所以这就是我可以通过 pgAdmin 连接,而不是 php
感谢大家的帮助!