IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Connexion base Postgresql : pg_connect ne retourne rien


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 44
    Points : 38
    Points
    38
    Par défaut Connexion base Postgresql : pg_connect ne retourne rien
    Bonjour,
    j'ai écrit un script de connexion à une base PostgreSQL mais lorsque je lance la connexion, je n'ai absolument rien en retour, et je ne comprends pas pourquoi.
    Voici le code :

    if (!isset($_SESSION["utilisateur"]))
    {
    header("location:saisie.php");
    exit;
    }
    else
    {
    // On récupère les variables de session
    $utilisateur=$_SESSION["utilisateur"];
    $password=$_SESSION["password"];
    echo "avant connexion<br>";
    // Traitement
    echo pg_last_error($dbconn);
    $dbconn = pg_connect("host=machine_distante port=5433 dbname=basepg user=$utilisateur password=$password") or die ("impossible de se connecter --> " . pg_last_error($dbconn));
    if ($dbconn)
    print "Correctement connecté à : " . pg_host($dbconn) . "<br/>";
    else
    echo "pas de connexion active<BR>";
    echo "après connexion\n";
    echo pg_last_error($dbconn);


    J'ai volontairement remplacé le nom de la machine hébergeant la base par machine_distante.
    Lorsque je lance mon script saisie.php je saisis l'identifiant et le mot de passe utilisateur, et je me retrouve bien sur la page traitement.php qui contient le code ci-dessus. Ensuite je n'ai rien du tout qui s'affiche.
    Merci pour votre aide.

  2. #2
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    Et tu as qd même le:
    echo "avant connexion<br>";
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 44
    Points : 38
    Points
    38
    Par défaut
    Oui ça je l'ai mais rien ensuite

  4. #4
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Pourquoi?

    echo pg_last_error($dbconn);

    Il y a pas de connexion avant ...
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 44
    Points : 38
    Points
    38
    Par défaut
    effectivement c'était inutile...mais je ne comprends pas pourquoi ma condition "if ($dbconn) ne donne rien...

  6. #6
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Dans le pj_connect, tu es sûr de tes arguments de connexion ?

    Le port n'est pas nécessaire, il est normalement dans Postgres dans ton cas
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 44
    Points : 38
    Points
    38
    Par défaut
    Oui les arguments sont bien corrects, ce qui m'étonne c'est que je n'ai vraiment rien en retour...

  8. #8
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Salut,

    J'utilises aussi Postgres par moment et j'ai le même shéma de connexion que toi mis à part le port car celui est défini dans les fichiers de conf.

    Je sais maintenant qu'une page vide s'affiche après une tentative de connexion uniquement quand le serveur de tourne pas !! Regardes de ce côté là (phpPgAdmin tourne ?)
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 44
    Points : 38
    Points
    38
    Par défaut connexion sur postgreSQL à distance via php
    Non il ne tourne pas sur le serveur distant, mais je ne comprends pas le rapport avec phpPgAdmin...
    quelles sont les conditions qui doivent être remplies pour qu'on puisse se connecter via php sur une base de données postGreSQL hébergée sur une machine distante ? Je suppose qu'il faut que le serveur apache tourne sur le serveur distant, mais sinon?

    Merci d'avance

  10. #10
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Le paramètre de configuration display_errors de php est à On ou Off?
    Lorsqu'il est à On, les erreurs de connexion s'affichent automatiquement sans qu'il y ait rien à coder.

    Par ailleurs pg_last_error() ne peut pas être utilisé pour les erreurs de connexion car il prend justement la ressource de connexion en paramètre.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 44
    Points : 38
    Points
    38
    Par défaut
    je l'ai mis à On et du coup j'ai ce message :
    Fatal error: Call to undefined function pg_connect() in /var/www/html/traitement.php on line 17

    J'ai la version 5.1.6 de PHP et je n'avais pas la librairie pgsql.so ; en installant la version 5.1.6 de cette lib, ça ne fonctionne toujours pas...

  12. #12
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Est-ce que la fonction phpinfo() affiche le module pgsql comme étant installé et activé?

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 44
    Points : 38
    Points
    38
    Par défaut
    Non, il n'y a aucune information sur ce module lorsque je lance phpinfo() ; est-ce la version PHP qui serait obsolète? en local j'ai la version 5.1.6, et sur la machine distante qui héberge la base postgreSQL, idem.
    Si je fais "php -v" en local, j'ai
    PHP Warning: Module 'pgsql' already loaded in Unknown on line 0
    PHP 5.1.6 (cli) (built: Jan 13 2010 17:13:05)
    Copyright (c) 1997-2006 The PHP Group
    Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies

  14. #14
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Même si php5.1 n'est pas tout jeune, il doit savoir faire tourner ce module, même php4 l'avait.
    Puisque php est aussi installé en ligne de commande, que renvoie la commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strace php -i 2>&1|grep -E 'pgsql|libpq'
    ?
    Elle devrait notamment montrer l'ouverture de la lib partagée libpq.so et quelques paramètres de conf du module pgsql.

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 44
    Points : 38
    Points
    38
    Par défaut
    stat64("/etc/php.d/pdo_pgsql.ini", {st_mode=S_IFREG|0644, st_size=59, ...}) = 0
    open("/etc/php.d/pdo_pgsql.ini", O_RDONLY) = 3
    read(3, "; Enable pdo_pgsql extension mod"..., 8192) = 59
    stat64("/etc/php.d/pgsql.ini", {st_mode=S_IFREG|0644, st_size=51, ...}) = 0
    open("/etc/php.d/pgsql.ini", O_RDONLY) = 3
    read(3, "; Enable pgsql extension module\n"..., 8192) = 51
    open("/usr/lib/php/modules/pgsql.so", O_RDONLY) = 3
    open("/usr/lib/libpq.so.4", O_RDONLY) = 3
    open("/usr/lib/php/modules/pdo_pgsql.so", O_RDONLY) = 3
    write(2, "PHP Warning: Module 'pgsql' alr"..., 65PHP Warning: Module 'pgsql' already loaded in Unknown on line 0
    write(1, " './configure' '--build=i686-red"..., 2309 './configure' '--build=i686-redhat-linux-gnu' '--host=i686-redhat-linux-gnu' '--target=i386-redhat-linux-gnu' '--program-prefix=' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib' '--libexecdir=/usr/libexec' '--localstatedir=/var' '--sharedstatedir=/usr/com' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--cache-file=../config.cache' '--with-libdir=lib' '--with-config-file-path=/etc' '--with-config-file-scan-dir=/etc/php.d' '--disable-debug' '--with-pic' '--disable-rpath' '--without-pear' '--with-bz2' '--with-curl' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--enable-gd-native-ttf' '--without-gdbm' '--with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr' '--with-openssl' '--with-png' '--with-pspell' '--with-expat-dir=/usr' '--with-pcre-regex=/usr' '--with-zlib' '--with-layout=GNU' '--enable-exif' '--enable-ftp' '--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg' '--enable-track-vars' '--enable-trans-sid' '--enable-yp' '--enable-wddx' '--with-kerberos' '--enable-ucd-snmp-hack' '--with-unixODBC=shared,/usr' '--enable-memory-limit' '--enable-shmop' '--enable-calendar' '--enable-dbx' '--enable-dio' '--with-mime-magic=/usr/share/file/magic.mime' '--without-sqlite' '--with-libxml-dir=/usr' '--with-xml' '--with-system-tzdata' '--enable-force-cgi-redirect' '--enable-pcntl' '--with-imap=shared' '--with-imap-ssl' '--enable-mbstring=shared' '--enable-mbstr-enc-trans' '--enable-mbregex' '--with-ncurses=shared' '--with-gd=shared' '--enable-bcmath=shared' '--enable-dba=shared' '--with-db4=/usr' '--with-xmlrpc=shared' '--with-ldap=shared' '--with-ldap-sasl' '--with-mysql=shared,/usr' '--with-mysqli=shared,/usr/lib/mysql/mysql_config' '--enable-dom=shared' '--with-dom-xslt=/usr' '--with-dom-exslt=/usr' '--with-pgsql=shared' '--with-snmp=shared,/usr' '--enable-soap=shared' '--with-xsl=shared,/usr' '--enable-xmlreader=shared' '--enable-xmlwriter=shared' '--enable-fastcgi' '--enable-pdo=shared' '--with-pdo-odbc=shared,unixODBC,/usr' '--with-pdo-mysql=shared,/usr/lib/mysql/mysql_config' '--with-pdo-pgsql=shared,/usr' '--with-pdo-sqlite=shared,/usr' '--enable-dbase=shared') = 2309
    /etc/php.d/pdo_pgsql.ini,
    /etc/php.d/pgsql.ini
    write(1, "mysql, pgsql, sqlite", 20mysql, pgsql, sqlite) = 20
    write(1, "pdo_pgsql", 9pdo_pgsql) = 9
    write(1, "PostgreSQL(libpq) Version", 25PostgreSQL(libpq) Version) = 25
    write(1, " $Id: pdo_pgsql.c,v 1.7.2.11 200"..., 61 $Id: pdo_pgsql.c,v 1.7.2.11 2006/03/14 10:49:18 edink Exp $ ) = 61
    write(1, "pgsql", 5pgsql) = 5
    write(1, "PostgreSQL(libpq) Version", 25PostgreSQL(libpq) Version) = 25
    write(1, "pgsql.allow_persistent", 22pgsql.allow_persistent) = 22
    write(1, "pgsql.auto_reset_persistent", 27pgsql.auto_reset_persistent) = 27
    write(1, "pgsql.ignore_notice", 19pgsql.ignore_notice) = 19
    write(1, "pgsql.log_notice", 16pgsql.log_notice) = 16
    write(1, "pgsql.max_links", 15pgsql.max_links) = 15
    write(1, "pgsql.max_persistent", 20pgsql.max_persistent) = 20

  16. #16
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Cette trace montre que tout semble OK coté pgsql pour le php en ligne de commande.
    Il me semble que si tu faisais un pg_connect() en ligne de commande actuellement, il trouverait bien la fonction.

    Pour php exécuté en module apache, il se peut que la conf ne soit pas la même. Je ne sais comment pas c'est fait sur redhat mais sur debian, par exemple, il y a deux confs distinctes: un répertoire /etc/php5/cli et un autre /etc/php5/apache2, chacun contenant un php.ini et un répertoire conf.d potentiellement différents.

    Peut-être que le support pgsql est activé en ligne de commande mais pas en module apache?

Discussions similaires

  1. [8.3] Connexion base PostgreSQL
    Par guillaumetan dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 25/11/2013, 00h06
  2. Connexion base postgreSQL
    Par bastien.hug dans le forum W4 Express
    Réponses: 2
    Dernier message: 09/12/2008, 11h29
  3. [PostgreSQL] Connexion à la base PostgreSQL : undefined function pg_connect()
    Par arnaudperfect dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/10/2008, 15h03
  4. Connexion JSP sur base PostGreSQL de Free
    Par jejoO dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/04/2007, 09h12
  5. connexion à une base postgresql distante
    Par chiheb dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 11/10/2006, 09h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo