Problem about connecting PostgreSQL through TCP/IP - Mailing list pgsql-php
From | Hui Chen |
---|---|
Subject | Problem about connecting PostgreSQL through TCP/IP |
Date | |
Msg-id | 923c3c1405081410326a1c2880@mail.gmail.com Whole thread Raw |
Responses |
Re: Problem about connecting PostgreSQL through TCP/IP
Re: Problem about connecting PostgreSQL through TCP/IP Re: Problem about connecting PostgreSQL through TCP/IP Re: Problem about connecting PostgreSQL through TCP/IP |
List | pgsql-php |
Hello, everyone, Can anyone help me? I am quite frustrating now. I have been trying to connect PostgreSQL server through TCP/IP connection using PHP. I was not successful. Could please read the following and give me some hints. Thanks a million. OS: Fedora Core 4 ("uname -s -r" yields "Linux 2.6.12-1.1398_FC4smp") PostgreSQL: version 8.0.3 PHP: version 5.0.4 In postgresql.conf, these three lines were inserted, listen_addresses = '*' port = 5432 max_connections = 100 The following lines were inserted to pg_hba.conf: local all all password host all all 127.0.0.1/32 password host all all 192.168.0.0/1 password restart posgresql by /sbin/service postgresql restart The server was restarted OK. The PHP script used to connect database is as follows, <?php $conn = pg_connect("host=localhost port=5432 dbname=foodb user=foo password=foo") or die ("Can not connect to postgres"); $result=pg_exec("SELECT * FROM footbl"); $fetch = pg_fetch_row($result); print "<html><body>"; print $fetch[0]; print "<body></html>"; pg_close($conn); // Close this connection ?> Assume this PHP script is named as "connectdb.php", then on commandline, when I run the following, php connectedb.php I see correct results, e.g., <html><body>foo<body></html> On commandline again, I used the following to connect database, psql -d foodb -h localhost -p 5432 -U foo Password: ************ Welcome to psql 8.0.3, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help with psql commands \g or terminate with semicolon to execute query \q to quit foodb=> It is OK. Then I disabled "iptables" temporarily for testing purpose by /sbin/service iptables stop Flushing firewall rules: [ OK ] Setting chains to policy ACCEPT: filter [ OK ] Unloading iptables modules: [ OK ] On localhost, I tried this command, telnet localhost 5432 after hit "enters", telnet exited. I checked postgresql_%S.log and see "LOG: invalid length of startup packet" which means postgresql server indeed saw the telnet connection. I tried this on any of my other machines in the LAN, I observed the same thing. In summary, it seemed the postgresql allowed TCP/IP connection, and worked well. However, when I ran the PHP script through web browser, I did not get connection. Instead, in Apache web server's error_log, I see [client 192.168.1.10] 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 "localhost" and accepting\n\tTCP/IP connections on port 5432? in /foo/connectdb.php on line 2 Interestingly, when I checked the log file for postgresql again, it did not have anything for this connection failure. It seemed the connection did not send to the database server at all. However, 1) I disabled firewall 2) I can telnet the ports 3) I can run the script from commandline What could go wrong? Thanks a lot for your reading this lengthy email. Waiting for your help! Gray