Re: Problem about connecting PostgreSQL through TCP/IP - Mailing list pgsql-php
From | Hui Chen |
---|---|
Subject | Re: Problem about connecting PostgreSQL through TCP/IP |
Date | |
Msg-id | 923c3c14050817083355d31d7@mail.gmail.com Whole thread Raw |
In response to | Re: Problem about connecting PostgreSQL through TCP/IP (Matthew Terenzio <matt@jobsforge.com>) |
List | pgsql-php |
Hello, Matthew, This is indeed great point. Thanks a lot for your help! Gray On 8/17/05, Matthew Terenzio <matt@jobsforge.com> wrote: > 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 > > > >