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
>


pgsql-php by date:

Previous
From: Christopher Kings-Lynne
Date:
Subject: Re: How to parse data type array columns?
Next
From: Hui Chen
Date:
Subject: Re: Problem about connecting PostgreSQL through TCP/IP