Re: Problem about connecting PostgreSQL through TCP/IP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



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@xxxxxxxxx <operationsengineer1@xxxxxxxxx> 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@xxxxxxxxx> 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




[Index of Archives]     [Postgresql General]     [Postgresql Admin]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Yosemite Backpacking]     [Postgresql Jobs]

  Powered by Linux