Postgresql 在命令行上连接到postgres是可行的,但不能使用PDO

Postgresql 在命令行上连接到postgres是可行的,但不能使用PDO,postgresql,pdo,Postgresql,Pdo,我在Postgres服务器的命令行上有一个有效登录名: psql -h127.0.0.1 -Upostgres --password -dDATABASE 但是,当我试图通过PDO使用它时,它不起作用: new PDO("pgsql:dbname=DATABASE;host=127.0.0.1;port=5432", "postgres", "PASSWORD"); 我得到这个信息: SQLSTATE[08006][7]无法连接到服务器:权限被拒绝\n\t服务器运行在主机127.0.0.1上

我在Postgres服务器的命令行上有一个有效登录名:

psql -h127.0.0.1 -Upostgres --password -dDATABASE
但是,当我试图通过PDO使用它时,它不起作用:

new PDO("pgsql:dbname=DATABASE;host=127.0.0.1;port=5432", "postgres", "PASSWORD");
我得到这个信息:

SQLSTATE[08006][7]无法连接到服务器:权限被拒绝\n\t服务器运行在主机127.0.0.1上,并且在端口5432上接受\n\tTCP/IP连接


PDO构造函数中的用户名和密码参数是一种稍微奇怪的设计,主要用于MySQL。对于博士后和大多数其他驾驶员,您应该:


问题是SE Linux。您必须明确允许Apache访问数据库:

setsebool -P httpd_can_network_connect_db 1

另请参见

这不起作用。此外,我不能添加我的$opt数组。对于tomcat:setsebool-ptomcat\u can\u network\u connect\u db 1和systemctl stop tomcat和systemctl start tomcat。
setsebool -P httpd_can_network_connect_db 1