我在基于 CakePHP 的项目的开发环境中遇到了一些问题。
问题是,CakePHP 可以在生产环境中连接,但是如果我在我的 PC 上运行 XAMPP,就会抛出一个
fatal error :没有主机“myexternalip”、用户“dbuser”、数据库“dbname”、SSL 关闭的 pg_hba.conf 条目
但使用相同的参数,我可以通过 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 连接的原因
谢谢大家的帮助!
关于postgresql - "FATAL: no pg_hba.conf entry for host"但我可以通过 pgAdmin 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29738989/