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

Symfony PHP Discussion :

symfony2 et ibm_db2 [2.x]


Sujet :

Symfony PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Points : 5
    Points
    5
    Par défaut symfony2 et ibm_db2
    Bonjour,

    je rencontre des problèmes pour accéder à une base DB2 avec symfony2.

    Quand je lance sous Dos la commande php app/console doctrine:mapping:convert yml ./src/Phil/SuiviBundle/Resources/config/doctrine/ --from-database --force (je veux créer les fichiers de métadonnées à partir d'une base de données existantes)
    j'ai l'erreur :
    PHP Fatal error: call to undefined function Doctrine\DBAL\Driver\IBMDB2\db2_connect() in .../vendor\doctrine\DBAL\Driver\IBMDB2\DB2Connection.php line 35


    Je suis sous Wamp sous Windows7. J'ai 1 script php de connexion à une base de données qui fonctionne et qui utilise la fonction db2_connect() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    $database = 'nomBase';
    $user = 'nomUser';
    $password = 'password';
    $hostname = 'NomHote';
    $port = numPort;
    
    $conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;" .
      "HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$password;";
    $conn = db2_connect($conn_string, '', '');
    
    if ($conn) {
        echo "Connexion réussie.";
        db2_close($conn);
    }
    else {
        echo "Connexion échouée.";
    }
    Clairement, il ne s'agit pas d'un problème PHP.

    Mon fichier parameters.yml sous symfony 2.3.1 :
    database_driver: ibm_db2
        database_host: NomHote
        database_port: 'numPort'
        database_name: nomBase
        database_user: nomUser
        database_password: password
        mailer_transport: smtp
        mailer_host: 127.0.0.1
        mailer_user: null
        mailer_password: null
        locale: en
        secret: 7fbf11094e9e3cfbbaf18b3b310a41efd0
        database_path: null
    
    Si une âme charitable et éclairée veut bien me donner un coup de main...

  2. #2
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 104
    Points : 85
    Points
    85
    Par défaut
    Essaye :
    Avec l'antislash devant...

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonjour chico_du_35

    Merci pour ta réponse.
    J'ai mis un antislash \db2connect() à la ligne 35 du fichier ../vendor/.../Driver/IBMDB/DB2Connection.php mais le message d'erreur persiste.

    Petite précision : le code de 17 lignes "$database ='nomBase' etc ... est contenu dans un fichier en dehors de symfony.

  4. #4
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 104
    Points : 85
    Points
    85
    Par défaut
    procède par étape :

    + vérifie si le fichier dans lequel est défini db2_connect est bien inclu
    + si tu utilise un autoloader, vérifie que le chemin du fichier dans lequel est défini db2_connect est bien dans l'include path

    Utilise get_included_files pour le premier point.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Points : 5
    Points
    5
    Par défaut symfony2 et ibm_db2
    Merci chico_du_35 de t'être penché sur mon problème. A force de creuser je crois avoir trouvé la solution

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Points : 5
    Points
    5
    Par défaut connection symfony2-base DB2
    Sous wampserver 2.2 et symphony 2.3.3 sur windows7 en octobre 2013
    php app/console doctrine:mapping:convert yml ./src/Phil/SuiviBundle/Resources/config/doctrine/ --from-database –force
    gènère une erreur :
    PHP Fatal error: call to undefined function Doctrine\DBAL\Driver\IBMDB2\db2_connect() in ../vendor\doctrine\DBAL\Driver\IBMDB2\DB2Connection.php line 35
    2 façons de connecter db2 a symfony (voir fichier app_dev.php ****) :
    - Native
    - Pdo.
    Les 2 types de connexion peuvent s'appuyer sur ODBC

    Tout d'abord vérifier que php_pdo_odbc.dll est présent dans le répertoire des extensions *
    Si non, télécharger, dézipper et copier dans ce répertoire. Ajouter dans php.ini ** : extension=php_pdo_odbc.dll.

    En native :
    - App_dev.php : choisir comme Driver IBM DB2 (native)
    Si vous vous arrêtez-là, très certainement vous aurez une erreur :
    PHP Fatal error: call to undefined function Doctrine\DBAL\Driver\IBMDB2\db2_connect() in ../vendor\doctrine\DBAL\Driver\IBMDB2\DB2Connection.php line 35
    Ce qu'il faut faire :
    - Télécharger le fichier php_ibm_db2.dll *** sur sourceforge.net
    - Dezipper et installer dans le répertoire des extensions de PHP
    - Ajouter dans php.ini de php : extension=php_ibm_db2.dll,
    - Redémarrer le serveur web

    En pdo :
    - Vérifier l'existence du fichier php_pdo_ibm.dll dans le répertoire des extensions php. Si non présent, télécharger, dézipper et copier dans ce répertoire.
    - Ajouter dans php.ini de php : extension = php_pdo_ibm.dll,
    - Redémarrer le serveur web
    Si vous vous arrêtez-là très certainement vous aurez une erreur
    PDOException : coud not find driver
    Il faut modifier le fichier Driver.php qui se trouve dans vendor\doctrine\dbal\lib\doctrine\dbal\Driver\PDOIBM. Dans la méthode privée _constructPdoDsn remplacer $dsn = 'ibm;'; par $dsn = 'odbc:DRIVER={IBM DB2 ODBC DRIVER};';.

    Si vous relancez la commande doctrine:mapping:convert vous n'aurez plus de message d'erreur par rapport à la connexion mais vous aurez quand même un message d'erreur
    no metadata classes to process
    .
    La bonne nouvelle c'est que vous avez une connexion symfony-db2 valide. La mauvaise c'est qu'en php-db2 il est impossible d'accéder aux métadata.

    * où se trouve le répertoire des extensions ? C'est le répertoire indiqué par la colonne extension_dir à partir d'un phpinfo();

    ** Attention : php (ex la version 5.3.13) contient plusieurs fichier php.ini. Le fichier php.ini à modifier est celui qui se trouve dans le répertoire indiqué par la ligne Loaded Configuration File à partir d'un phpinfo().

    *** Attention des mauvais fichiers php_ibm_db2.dll sont en circulation. Il faut télécharger un des fichiers sur sourceforge.net, celui qui correspond à votre architecture et à votre version de compilateur apache/php.
    Pour connaitre votre architecture :
    - dans windows : démarrer -> tous les programmes->système et sécurité->système : type de système (exemple système d'exploitation 32 bits)
    - à partir d'un phpinfo() répérer la ligne architecture (exemple x86)
    Pour connaître votre compilateur:
    A partir d'un phpinfo() répérer la ligne "Compiler"

    Personnellement, j'ai installé le fichier php_ibm_db2-ver-(nts_ts)-vc(6|9)-x86.zip

    **** : le contenu de ce fichier correspond à la page welcome de Symfony après installation et paramétrage du framework sur votre serveur web. On le lit dans un navigateur web à l'adresse http://nom_serveur_web/nom_repertoir...li/app_dev.php

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.x] Votre avis sur Symfony2
    Par misterakm dans le forum Symfony
    Réponses: 197
    Dernier message: 26/06/2016, 15h05
  2. [2.x] Sortie de Symfony2
    Par Michel Rotta dans le forum Symfony
    Réponses: 110
    Dernier message: 30/08/2011, 17h00
  3. comment installer Symfony2 sur netbeans avec ubuntu 10.10
    Par thor76160 dans le forum NetBeans
    Réponses: 9
    Dernier message: 03/04/2011, 21h38
  4. [DB2] Les mystères de ibm_db2.instance_name
    Par Théolude dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 05/03/2010, 21h52
  5. Impossible de charger ibm_db2.dll
    Par xave dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 19/03/2007, 17h26

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