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

#1 05/04/2019 08:23:31

caius
Membre

pg_connecte ne retourne rien

Bonjour,

je suis nouvelle utilisatrice de postgreSQL 10 et là j'essaie d'accéder à ma base avec un select tout simple via php. Je ne comprend pas pourquoi ma connexion ne se fait pas.
Le fichier php sur se trouve sur un autre serveur que celui où est installé postgres mais j'ai bien entré l'autorisation dans le fichier pg_hba de mon instance avec

host    all             all             xxx.xxx.xxx.xx/32       md5  (les x sont remplacés par la vraie ip)

Je n'ai aucun retour dans les log de l'instance, du coup je ne sais pas pourquoi cela ne fonctionne pas. J'ai essayé ceci :

$conn= pg_connect( "host=$sid_post port=$port dbname=$base_postgres user=$user_postgres password=$pass_postgres");
if (!$conn){
    print pg_last_error($conn);
    echo "error connection";
} else {
    echo 'everything was ok';
}

mais rien de rien ne s'affiche.

Pourriez-vous me dire ce qui cloche et ce que j'ai oublié de faire por que cela fonctionne svp ?
J'avais aussi pensé à utiliser PDO pour PDOexception mais il me manque le driver. Mais avant cela j'aimerai bien comprendre pourquoi cela ne marche pas avec une simple requête de connexion.

Merci pour votre aide

Hors ligne

#2 05/04/2019 08:57:53

gleu
Administrateur

Re : pg_connecte ne retourne rien

Si vous n'avez absolument aucun retour, cela sent le firewall qui vous empêche la connexion. Ce serait la première chose que je vérifierais.

Attention qu'au niveau de PostgreSQL, il faut aussi avoir configurer le paramètre listen_addresses.


Guillaume.

Hors ligne

#3 05/04/2019 14:12:51

caius
Membre

Re : pg_connecte ne retourne rien

Merci pour votre retour,
en fait il me manquait des extensions. postgres était bien installé mais pas complètement.

Merci !

Hors ligne

#4 05/04/2019 17:34:51

dverite
Membre

Re : pg_connecte ne retourne rien

Lorsque pg_connect échoue, il affiche ou non une erreur en fonction du paramètre php display_errors et éventuellement de error_log.
S'il ne le fait pas, pg_last_error($conn) ne le fera pas non plus parce que $conn sera vide.
Il faudrait plutôt faire par exemple

echo htmlentities(error_get_last()['message']);

pour avoir le message lorsque pg_connect() a renvoyé false.

La recommandation pour les sites de prod est de ne pas afficher par défaut les erreurs à l'écran, puisque ça peut fuiter des informations qu'un visiteur n'a pas à connaitre.

Hors ligne

#5 08/04/2019 10:22:40

caius
Membre

Re : pg_connecte ne retourne rien

Ok c'est noté,
merci beaucoup pour ton explication !

Hors ligne

Pied de page des forums