Re: Problem about connecting PostgreSQL through TCP/IP

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




restart posgresql by
/sbin/service postgresql restart
The server was restarted OK.


I usually use pg_ctl to start.

With it and other methods of starting postgres you have to include the -i flag to get it to listen over TCP/IP

perhaps your method of restarting needs this flag as well?



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 &quot;localhost&quot; 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





[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