通过远程IP地址连接到PostgreSQL数据库,我通过Windows使用pgAdmin III取得了成功,但每当我尝试使用标准php-pgsql
库从本地CentOS 6 Apache Web服务器连接时,我都会收到错误pg_connect()
。
注意:
信用如下:
Host (IP): xx.xx.xx.xx
Port: 5432
DBname: sandbox
Username: abc
Password: ***
MaintenanceDB: template1
这是我试图在本地服务器上运行的PHP代码:
pg_connect("host=xx.xx.xx.xx port=5432 dbname=sandbox user=abc password=***");
我也尝试过:
pg_connect("host=xx.xx.xx.xx port=5432 dbname=template1 user=abc password=***");
当我尝试连接时,收到以下错误:
Warning: pg_connect(): Unable to connect to PostgreSQL server: could not connect to server: Permission denied Is the server running on host "xx.xx.xx.xx" and accepting TCP/IP connections on port 5432?
我在extension=pgsql.so
目录和/etc/php.d/
中添加了/取消注释service httpd restart
。我甚至打开了我的iptables
端口,所以毫无疑问本地防火墙端口被阻止了:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 5432 -j ACCEPT
提前致谢: - )
答案 0 :(得分:0)
根据你的postgresql连接问题,这个解决方案可能有效。我只是从php手册中得到这个答案,我不确定,所以请在这里查看更多http://php.net/manual/en/function.pg-connect.php#38291
您应该尝试将host =和port = parts从连接字符串中删除。这听起来很奇怪,但这是Postgre的“选择”。如果您尚未在postgresql.conf中激活TCP / IP端口,则postgresql不接受来自TCP / IP端口的任何传入请求。