PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 15/07/2010 12:31:25

tonton
Membre

config postgres avec php

Bonjour je rencontre des souci de connection a postgresql pour installer des site en php sur mon serveur web dans un datacenter

j'utilise Centos 5.xx

Linux  2.6.18-194.8.1.el5 #1 SMP

postgresql8.4 du depot http://yum.pgsqlrpms.org/8.4/redhat/rhe … -$basearch

et php 5.2 http://www.jasonlitka.com/media/EL$rele … $basearch/
PHP 5.2.13 (cli) (built: Jun  2 2010 16:24:43)

mais en 5.1.16 du depot officiel meme souci

j'utilise phpPgMyadmin et la connection fonctionne
J'utilise aussi pgAdmin3 depuis chez moi et ça se connect aussi

mais ave le script de test pris dans un post precedent

<?php

ini_set('track_errors','on');

$conn = @pg_pconnect("host=/var/run/postgresql dbname=UneBase user=USER password=USERPWD");

echo "Connection result: ";
print_r($conn);
echo "<hr>";

if ($conn===false) {
    echo "Connection failed: ";
        print_r($php_errormsg);
            echo "<hr>";
            }
?>

Connection result:
Connection failed: pg_pconnect() [function.pg-pconnect]: Unable to connect to PostgreSQL server: 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"?

ou pour localhost

Connection result:
Connection failed: pg_pconnect() [function.pg-pconnect]: Unable to connect to PostgreSQL server: could not connect to server: Permission denied Is the server running on host "localhost" and accepting TCP/IP connections on port 5432?

pour pg_hba j'ai mis
# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
# "local" is for Unix domain socket connections only
local   all         all                              trust
# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
host    all         all         127.0.0.1/32          md5
hostssl    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               ident
#les hotes exterieur
host     all    robert   monip_adress/32          md5
hostssl  all    robert    monip_adress/32          md5
host     all    robert   monip_adress/32          trust
hostssl  all    robert   monip_adress/32          trust

host     all    robert   monip_publicdistant/32        md5

et dans posgresql.conf j'accepet les connection reseaux (pgadmin se connect)

quel test devrai je faire pour comprendre d'ou vient mon pb 
j'ai rien dans  /var/lib/pgsql/data/pg_log/postgresql-Thu.log  autre que demmarrage arret

cordialement
Tonton

Hors ligne

#2 15/07/2010 13:47:27

gleu
Administrateur

Re : config postgres avec php

Vous n'avez rien dans les logs de PostgreSQL parce que le client n'arrive pas à s'y connecter. Le serveur web et le serveur PostgreSQL sont sur le même serveur (physique ou virtuel) ? si oui, quels sont les valeurs de listen_addresses et de port ?


Guillaume.

Hors ligne

#3 15/07/2010 14:45:25

tonton
Membre

Re : config postgres avec php

Oui j'ai le serveur web et postgresql sur la meme machine physique.

dans posgresql.conf

listen_addresses = 'localhost,IP.public.du.serveur'

port = 5432

ce qui me derange c'est que phpPgadmin fonctionne (apres yum install phpPgAdmin et la config de pg_hba)

En commande ça donne
php /var/www/html/test.php
Connection result: Resource id #4<hr>

Hors ligne

#4 15/07/2010 15:21:52

daamien
damien clochard

Re : config postgres avec php

Quelques vérifications :

a/ Vérifier que le socket se trouvent bien à l'emplacement que vous annoncer : /var/run/postgresql

b/ les lignes qui matchent sur localhost ne sont pas cohérente entre IPv4 et IPv6

      host    all         all         127.0.0.1/32          trust
      host    all         all         ::1/128               ident

c/ essayez d'utiliser 127.0.0.1 plutot que localhost

d/ Beaucoup de ligne sont redondantes dans votre fichier pg_hba.conf. Par exemple :

  host     all    robert   monip_adress/32          md5
  hostssl  all    robert    monip_adress/32          md5

le tag host inclue hostssl + hostnossl donc la seconde ligne est parfaitement inutile

Même chose pour

host    all         all         127.0.0.1/32          trust
host    all         all         127.0.0.1/32          md5

Le fichier pg_hba.conf est déjà assez complexe à configurer ! Ne vous compliquez pas la tache avec des lignes redondantes.

Essayez de mettre en commentaire les lignes inutiles. Moins il y aura de lignes actives plus le débuggage sera simple.

Hors ligne

#5 15/07/2010 17:24:40

tonton
Membre

Re : config postgres avec php

a/ euh non c vrai y pas /var/run/postgresql  c'est necessaire ?
dans /var/run j'ai
-rw-r--r-- 1 root  root      5 jui 15 17:07 postmaster.5432.pid

meme un ps aux | grep postgresql ne renvoi rien
et
ps aux | grep postgre renvoi entre autre
/usr/bin/postmaster -p 5432 -D /var/lib/pgsql/data
Il manque quelquechose ?

b d /
j'ai simplifier le fichier

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
# "local" is for Unix domain socket connections only
local   all         all                              md5
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5
#les hotes exterieur
host     all    robert   addr.ip.du.serveur          md5
host     all    roger   monip_publicdistant/32         md5

c/ j'ai aussi essayer avec 127.0.0.1

autre/
php /var/www/html/test.php
Connection result: Resource id #4<hr> 

ça c'est une erreur ou mon test c'est réellement connecté ?

Dernière modification par tonton (15/07/2010 17:25:11)

Hors ligne

#6 15/07/2010 17:50:32

gleu
Administrateur

Re : config postgres avec php

postmaster.5432.pid est le fichier PID, pas la socket Unix. Le résultat du ps est bon à priori. Le résultat de la commande PHP aussi (Resource id #X est le message normal quand la connexion est réalisée avec un script PHP).


Guillaume.

Hors ligne

#7 15/07/2010 18:00:51

tonton
Membre

Re : config postgres avec php

pourtant je rencontre tjs le souci

Warning: pg_pconnect() [function.pg-pconnect]: Unable to connect to PostgreSQL server: could not connect to server: Permission denied Is the server running on host "localhost" and accepting TCP/IP connections on port 5432? in /var/www/html/groupe/bin/core/functions.php  on line 1991

Hors ligne

#8 15/07/2010 19:26:58

tonton
Membre

Re : config postgres avec php

je viens d'essayer sur ubuntu 10.04 impec

donc je rapproche mes deux fichiers posgresql.conf
et deux différences qui si je les remplace empeche le redémarrage

unix_socket_directory = '/var/run/postgresql'
résolu en créant un dossier /var/run/postgresql propriétaire postgres

l'autre difference

ssl = true                              # (change requires restart)

c quoi le socket directory de postgresql 8.4.4 sur centos 5 (ou comment le savoir ? )

Que faut il ajouter pour activer le ssl support dans postgresql 8.4.4 ??
si quelqu'un sait ?

tonton

Dernière modification par tonton (15/07/2010 19:40:38)

Hors ligne

#9 15/07/2010 20:48:09

tonton
Membre

Re : config postgres avec php

bon pour ceux qui suivent

apres la creation de /var/run/postgresql   

et du certificat ssl le serveur redemmarre

mais ça ne resoud rien

Warning: pg_pconnect() [function.pg-pconnect]: Unable to connect to PostgreSQL server: could not connect to server: Permission denied Is the server running on host "localhost" and accepting TCP/IP connections on port 5432? in /var/www/html/groupe/bin/core/functions.php  on line 1991

changer le socket dans postregsql.conf empêche le fonctionnement de phpPgAdmin aussi je reviens a l'ancien réglage :  ' '

Hors ligne

#10 15/07/2010 22:22:51

gngassam
Membre

Re : config postgres avec php

tonton a écrit :

c quoi le socket directory de postgresql 8.4.4 sur centos 5 (ou comment le savoir ? )

cherche le fichier ".s.PGSQL.5432" sur ton serveur, et remplace le chemin dans ton "host".

Hors ligne

#11 15/07/2010 23:01:18

gleu
Administrateur

Re : config postgres avec php

Par défaut, sur les distrib à base de RPM, c'est /tmp. Quant au SSL, il faut en effet avoir un certificat.


Guillaume.

Hors ligne

#12 16/07/2010 01:05:04

tonton
Membre

Re : config postgres avec php

ben ça passe

au lieu de localhost j'indique /tmp et l'install à lieu, la connection à la base a fonctionnée et les tables sont là ...

Ok Merci big_smile

tonton

Dernière modification par tonton (16/07/2010 01:23:34)

Hors ligne

Pied de page des forums