DB-Zugriff von PHP aus scheitert (Could not connect to server: No such file or dir.)

Hi,

ich habe unter Debian Lenny mittels apt-get postgresql installiert (8.3.11). Ein Portscan zeigt mir, dass postgresql auf Port 5432 horcht und als User postgres kann ich mittels psql auf die Datenbanken zugreifen. Soweit also keinerlei Anzeichen für einen Fehler. Das postgresql Logfile sagt:

2010-09-20 14:29:41 CEST LOG: Autovacuum-Launcher startet
2010-09-20 14:29:41 CEST LOG: Datenbanksystem ist bereit um Verbindungen anzunehmen
2010-09-20 14:29:41 CEST LOG: unvollständiges Startpaket

Postgresql habe ich installiert, um Davical (DAViCal - DAViCal Home) installieren zu können. Das Davical-php-Skript läuft aber nicht sondern produziert folgenden Fehler:

[20-Sep-2010 14:20:59] PHP Fatal error: PDO connection error ‘pgsql:dbname=davical user=davical_app’: SQLSTATE[08006] [7] could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket “/var/run/postgresql/.s.PGSQL.5432”? in /usr/share/davical/inc/AwlDBDialect.php on line 78

Da die Verbindung mittels psql aber funktioniert und postgresql auf Port 5432 zu warten scheint, habe ich keine Idee mehr wie und wo ich nach dem Fehler suchen könnte. Die db-roles, die davical verlangt, habe ich angelegt und entsprechend im ph_hba.conf authorisiert.

Ich bitte um Ideen, welche Logfiles vielleicht noch interessant sein könnten oder was der Fehler sein könnte.

Herzlichen Dank, Fabian.

Evtl. solltest du das Debug-Level in der postgresql.conf erhöhen. Dann bekommst du mehr Hinweise…

[20-Sep-2010 14:20:59] PHP Fatal error:  PDO connection error  'pgsql:dbname=davical user=davical_app': SQLSTATE[08006] [7] could not  connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket  "/var/run/postgresql/.s.PGSQL.5432"? in  /usr/share/davical/inc/AwlDBDialect.php on line 78

Schau mal in deiner postgres.conf nach, wo der Socket hingespeichert wird. Falls dort z.B. /tmp steht änder dies mal auf /var/run/postgresql/ ab und starte PostgreSQL mal durch. Dann sollte es gehen. Optional kannst du bei PDO auch den Stocket mit geben:
z.B.

'pgsql:dbname=davical;user=davical_app;socket_name=/tmp/.s.PGSQL.5432

wobei /tmp/ der Pfad ist, der in der postgres.conf steht.

Oder aber auch den Hostname:

'pgsql:dbname=davical;user=davical_app;host=localhost