无法使用 PHP pg_connect() 连接到 PostgreSQL

Posted

技术标签:

【中文标题】无法使用 PHP pg_connect() 连接到 PostgreSQL【英文标题】:Can't Connect to PostgreSQL with PHP pg_connect() 【发布时间】:2011-03-29 17:54:21 【问题描述】:

编辑:我刚刚意识到这个问题可能更适合 ServerFault。版主不要复制它,请把它移过来?谢谢。

我检查了 php-info,Postgresql 扩展在那里(pg_connect() 不是未定义的)。我还可以在本地主机上使用psql 连接到 postgresql(我已经适当地编辑了我的 pg_hba.conf 文件)。这是不起作用的代码:

<?php
$dbconn = pg_connect("host=localhost port=5432 dbname=mydb user=myuser password=mypass") or die('Could not connect: ' . pg_last_error());
?>

此代码只会导致浏览器中显示“无法连接:”。

我检查了我的 apache 日志,这是相关的错误消息:

PHP Warning:  pg_connect() [<a href='function.pg-connect'>function.pg-connect</a>]: 
Unable to connect to PostgreSQL server: could not connect to server: Permission 
denied\n\tIs the server running on host &quot;localhost&quot; and accepting\n\tTCP/IP 
connections on port 5432?

如何修复/调试此问题?

编辑:我在 Centos 5.4 顺便说一句。

【问题讨论】:

【参考方案1】:

无法连接到服务器:权限被拒绝

编辑:我在 Centos 5.4 顺便说一句。

检查/var/log/audit/audit.log。您可能遇到了 SELinux 规则。

【讨论】:

谢谢,就是这样。我刚刚做了setenforce 0,它奏效了。

以上是关于无法使用 PHP pg_connect() 连接到 PostgreSQL的主要内容,如果未能解决你的问题,请参考以下文章

PHP 无法在 CentOS 7 上连接到 PostgreSQL

无法连接到 PostgreSQL 服务器:致命:角色“apache”不存在

如何在不指定数据库名称的情况下连接到 PostgreSQL?

无法使用php连接错误连接到mysql:无法连接到'localhost'(10061)上的MySQL服务器[重复]

Docker 无法使用 PHP 连接到 mariadb

无法使用 PHP 页面连接到 MySQL