Connection logging shows an unvarying pattern: every connection attempt, regardless of target database or source (PHP or psql), first uses a wrong protocol and then succeeds on a second attempt, presumably after falling back:

LOG:  connection received: host=[local]
FATAL:  unsupported frontend protocol
LOG:  connection received: host=[local]
LOG:  connection authorized: user=testuser database=test

Any thoughts on what could make both clients attempt wrong protocol?

/usr/lib has the following libpq files:
-rw-r--r--    1 root     root       592784 Jun 24  2004 /usr/lib/libpq.a
lrwxrwxrwx    1 root     root           12 Jul  8  2004 /usr/lib/libpq.so -> libpq.so.3.1
lrwxrwxrwx    1 root     root           12 Nov 28  2003 /usr/lib/libpq.so.2 -> libpq.so.2.2
-rwxr-xr-x    1 root     root        61252 Nov  4  2003 /usr/lib/libpq.so.2.2
lrwxrwxrwx    1 root     root           12 Jul  8  2004 /usr/lib/libpq.so.3 -> libpq.so.3.1
-rwxr-xr-x    1 root     root       112040 Jun 24  2004 /usr/lib/libpq.so.3.1


Tom Lane wrote:
Bucks vs Bytes Inc <postgresql@bucksvsbytes.com> writes:
  
Is there any postmaster logging I can turn on that will detail what's 
triggering the error?
    

Well, you could change the error report in postmaster.c to show the
specific protocol version code it's receiving (7.4 and up do this,
but it hadn't occurred to us as of 7.3).  I have little doubt what
you will find though.  Maybe what you really want is to enable
log_connections so you can find out where the problematic connections
are coming from.

			regards, tom lane