Thread: problem with connection to remote server
Hi, I have some PHP application and 2 postgreSQL remote servers. All servers are runing under Solaris 10. I can connect from application to one postgresql server and all work fine. I have to move database to second server. I export/importdata. Check all data inside database - OK. I can't connect from php application into second postgresql server. I test if it possible to connect using psql -h remote_server and I can connect. I check firewall's ... but I can connectbetween application serwer and postgresql server using CMD (psql). Only PHP application can't connect. Otherside ...the PHP application works fine with first postgresql server (and PHP configuration supports psql). I compared TCP packets and it looks like the application and server drop connection after first 2 packets (ACK). Can anybody understand problem and know answer? best regards Irek
On Thu, 2010-01-28 at 10:51 +0100, Ireneusz Tarnowski wrote: > Hi, > > I have some PHP application and 2 postgreSQL remote servers. > All servers are runing under Solaris 10. > > I can connect from application to one postgresql server and all work > fine. I have to move database to second server. I export/import data. > Check all data inside database - OK. I can't connect from php > application into second postgresql server. > > I test if it possible to connect using psql -h remote_server and I > can connect. I check firewall's ... but I can connect between > application serwer and postgresql server using CMD (psql). Only PHP > application can't connect. Otherside ... the PHP application works > fine with first postgresql server (and PHP configuration supports > psql). > > I compared TCP packets and it looks like the application and server > drop connection after first 2 packets (ACK). The place to look for error messages is in the PostgreSQL server log. I would bet that it is rejecting the connection because the source ip/user are different. When you connect from the command-line it is probably using ident information and that connection is being allowed, but the PHP application will be running as the webserver user and will need different credentials. Check your pg_hba.conf file on the server and adjust it to let the desired connection happen. Cheers, Andrew. ------------------------------------------------------------------------ http://andrew.mcmillan.net.nz/ Porirua, New Zealand Twitter: _karora Phone: +64(272)DEBIAN Be different: conform. ------------------------------------------------------------------------
Attachment
In response to Andrew McMillan <andrew@morphoss.com>: > On Thu, 2010-01-28 at 10:51 +0100, Ireneusz Tarnowski wrote: > > Hi, > > > > I have some PHP application and 2 postgreSQL remote servers. > > All servers are runing under Solaris 10. > > > > I can connect from application to one postgresql server and all work > > fine. I have to move database to second server. I export/import data. > > Check all data inside database - OK. I can't connect from php > > application into second postgresql server. > > > > I test if it possible to connect using psql -h remote_server and I > > can connect. I check firewall's ... but I can connect between > > application serwer and postgresql server using CMD (psql). Only PHP > > application can't connect. Otherside ... the PHP application works > > fine with first postgresql server (and PHP configuration supports > > psql). > > > > I compared TCP packets and it looks like the application and server > > drop connection after first 2 packets (ACK). > > The place to look for error messages is in the PostgreSQL server log. I > would bet that it is rejecting the connection because the source ip/user > are different. > > When you connect from the command-line it is probably using ident > information and that connection is being allowed, but the PHP > application will be running as the webserver user and will need > different credentials. > > Check your pg_hba.conf file on the server and adjust it to let the > desired connection happen. In addition to this, PHP will give some pretty useful error messages when it can't connect. If you're not seeing those, then you should adjust your application logic to log them, it will make your life a lot easier. If they don't clearly define the problem, post them here ... I (and others like me) have seen them enough to know what they indicate. -- Bill Moran http://www.potentialtech.com http://people.collaborativefusion.com/~wmoran/
> In addition to this, PHP will give some pretty useful error messages when > it can't connect. If you're not seeing those, then you should adjust > your application logic to log them, it will make your life a lot easier. > If they don't clearly define the problem, post them here ... I (and > others like me) have seen them enough to know what they indicate. I have warning: Warning: pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: could not connect to server: No suchfile or directory Is the server running on host "XX.XX.XX.XX" and accepting TCP/IP connections on port 5432? in /export/sun1000/XXXXXXX/public_html/dbtest.phpon line 10 And nothing more. Postgresql log, apache error log and php error log write nothing about this connection. -- Irek
In response to Ireneusz Tarnowski <Ireneusz.Tarnowski@pwr.wroc.pl>: > > In addition to this, PHP will give some pretty useful error messages when > > it can't connect. If you're not seeing those, then you should adjust > > your application logic to log them, it will make your life a lot easier. > > If they don't clearly define the problem, post them here ... I (and > > others like me) have seen them enough to know what they indicate. > > I have warning: > > Warning: pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: could not connect to server: No suchfile or directory Is the server running on host "XX.XX.XX.XX" and accepting TCP/IP connections on port 5432? in /export/sun1000/XXXXXXX/public_html/dbtest.phpon line 10 > > And nothing more. Postgresql log, apache error log and php error log write nothing about this connection. This is usually the result of a network problem. hba problems are usually reported as such by PHP. I would first 2x check the obvious ... did you mistype the IP or hostname in the connection string? Check firewall logs to ensure it's not being blocked by something. Run tcpdump on the server to see if it's getting the syn packets. -- Bill Moran http://www.potentialtech.com http://people.collaborativefusion.com/~wmoran/
On 2010-01-28, Ireneusz Tarnowski <Ireneusz.Tarnowski@pwr.wroc.pl> wrote: >> In addition to this, PHP will give some pretty useful error messages when >> it can't connect. If you're not seeing those, then you should adjust >> your application logic to log them, it will make your life a lot easier. >> If they don't clearly define the problem, post them here ... I (and >> others like me) have seen them enough to know what they indicate. > > I have warning: > > Warning: pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: could not connect to server: No suchfile or directory Is the server running on host "XX.XX.XX.XX" and accepting TCP/IP connections on port 5432? in /export/sun1000/XXXXXXX/public_html/dbtest.phpon line 10 > > And nothing more. Postgresql log, apache error log and php error log write nothing about this connection. "No such file or directory" is ENOENT but I can't see how errno is getting set to that on an IP socket connectiom.