PHP无法连接到Postgres - 服务器是否在本地运行并接受Unix域套接字上的连接" /tmp/.s.PGSQL.5432"?

时间:2016-02-10 15:24:23

标签: php postgresql

我目前的设置是CentOS 7,Postgres 9.2和PHP 5.4。

我正在将现有网站移动到新服务器上,使用的连接代码是

pg_connect(dbname=database user=postgres)

(上面我删除了与此问题无关的原始数据库名称)。当我查看apache日志时,我看到代码失败并出现错误;

PHP Warning:  pg_connect(): Unable to connect to PostgreSQL server: could not connect to server: No such file or directory\n\tIs the server running locally and accepting\n\tconnections on Unix domain socket "/tmp/.s.PGSQL.5432"? 

我远程访问服务器并让phpPgAdmin正常工作,如果我在我的连接字符串中包含host=localhost那么一切正常。我的问题是如何让它工作而不必将主机包含在连接字符串中,从所有文档中我都可以发现它是可选的,因此如果空白默认为localhost(这就是我想要的)。

问题是我正在移动的设置使用了很多pg_connect,并且从未指定过主机。这意味着几乎每个页面都要在每个连接字符串中包含它。

我尝试将pg_hba.conf和postgresql.conf的权限更改为777而没有任何运气。我已经尝试了ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432,如此处的许多问题所示,没有运气,SELinux已经设置为允许,但以防万一我也sudo setsebool -P httpd_can_network_connect_db 1

我的pg_hba.conf看起来像

# TYPE  DATABASE    USER        CIDR-ADDRESS          IP-MASK      METHOD
# "local" is for Unix domain socket connections only
local   all         all                                                 trust
# IPv4 local connections:
host    all         all         127.0.0.1             255.255.255.255   trust
host    all         all         192.168.7.0           255.255.255.0     trust
host    all         all         192.168.8.0           255.255.255.0     trust
host    all         all         192.16.10.0           255.255.255.0     trust
host    all         all         10.0.10.0             255.255.255.0     trust
host    all         all         0.0.0.0/0 trust
# IPv6 local connections:
host    all         all         ::1/128                                 trust

我的postgresql.conf包含

max_connections = 120
listen_addresses = ‘*’
port = 5432
正好在我的测试页面上加载的PHP代码很简单 $second = pg_connect(dbname=database user=postgres) or die(cannot connect again)如果更改为$second = pg_connect(host=localhost dbname=database user=postgres) or die(cannot connect again)则可以正常使用。

0 个答案:

没有答案