我已将 PHP 配置为通过 Unix 套接字使用 19.3.7. Peer Authentication 对 PostgreSQL 进行身份验证,并且它适用于本机 PHP,以及在不使用 Symfony 的情况下使用 Doctrine 时,但在使用 Symfony 时我无法让它工作。< /p>
PHP 是使用 FPM 设置的,我创建了一个侦听给定套接字并由 Linux 用户 redux
运行的池,还有一个 PostgreSQL 用户和数据库也名为 testing
。
以下原生 PHP 脚本返回的结果没有错误,所以我知道 PHP、FPM 和 PostgreSQL 已正确设置,可以使用对等身份验证建立连接,而无需 PostgreSQL 用户名或密码。
testing
以下使用 Doctrine 但不使用 Symfony 的脚本返回的结果没有错误,所以我知道 Doctrine 能够使用对等身份验证建立连接,而无需 PostgreSQL 用户名或密码。
$pdo = new PDO("pgsql:dbname=testing");
$rs = $pdo->query('SELECT * FROM company')->fetchAll();
如何使用 Symfony 建立相同的连接?
我预计以下内容会起作用,但是结果是 $pdo = EntityManager::create(['driver' => 'pdo_pgsql','dbname' => 'testing'], Setup::createAnnotationMetadataConfiguration([__DIR__."/../src"], true, null, null, false))->getConnection();
$rs = $pdo->query('SELECT * FROM company')->fetchAll();
An exception occurred in driver: SQLSTATE[08006] [7] fe_sendauth: no password supplied
没有向 journalctl 提供任何线索,但 monolog 报告了以下内容:
doctrine:
dbal:
driver: pdo_pgsql
dbname: testing
server_version: 13