Re: Problem about connecting PostgreSQL through TCP/IP - Mailing list pgsql-php
From | Matthew Terenzio |
---|---|
Subject | Re: Problem about connecting PostgreSQL through TCP/IP |
Date | |
Msg-id | 99dfa3a8b0e6a45655296cca37bf148d@jobsforge.com Whole thread Raw |
In response to | Re: Problem about connecting PostgreSQL through TCP/IP (Hui Chen <gray.chenhui@gmail.com>) |
Responses |
Re: Problem about connecting PostgreSQL through TCP/IP
|
List | pgsql-php |
This may be of interest to the PHP Dev group. I'll forward it to someone there. On Aug 17, 2005, at 1:03 AM, Hui Chen wrote: > Hello, > > Thanks a lot! > > I did noticed "-i" option. I am using 8.0 whose manual > (http://www.postgresql.org/docs/8.0/interactive/app-postmaster.html) > states that "-i" option is deprecated. The manual > (http://www.postgresql.org/docs/8.0/interactive/runtime- > config.html#RUNTIME-CONFIG-CONNECTION) > also says that I can enable "listen_addresses" option in the > postgresql.conf to enable the server to listen over TCP/IP. What > really puzzles me is that I could actually telnet server at 5432 ports > and saw an corresponding entry in the log file; however, when I used > PHP to connect the server, the log file did not have an entry for the > failed connection attempt at all. Do you think what can go wrong? > Thanks! > > Gray > > > On 8/15/05, operationsengineer1@yahoo.com > <operationsengineer1@yahoo.com> wrote: >> did you enable the "i" flag when you started the >> postmaster? if you didn't do that, tcp/ip will not >> connect! >> >> http://www.postgresql.org/docs/7.4/interactive/app-postmaster.html >> >> good luck. >> >> --- Hui Chen <gray.chenhui@gmail.com> wrote: >> >>> 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 >>> >>> ---------------------------(end of >>> broadcast)--------------------------- >>> TIP 4: Have you searched our list archives? >>> >>> http://archives.postgresql.org >>> >> >> >> __________________________________________________ >> Do You Yahoo!? >> Tired of spam? Yahoo! Mail has the best spam protection around >> http://mail.yahoo.com >> > > ---------------------------(end of > broadcast)--------------------------- > TIP 2: Don't 'kill -9' the postmaster >