Je m'adresse à vous car je suis face à un serieux pb.
Je dois développer un outil php qui doit aller chercher des données dans la BD firebird 1.5, c'est la première fois que j'utilise cette base et je n'arrive tous simplement pas à m'y connecter via PHP5.
Mon objectif, a terme est de me connecter à cette base via la couche d'abstration de BD de php5, le PDO.
1/ Ma config est la suivante :
a/ j'ai installé firebird 1.5 en tant que serveur sous window xp b/ j'utilise ibexpert comme interface (equivalent de phpMyadmin pour Mysql) c/ j'ai installé wamp dernière version 1.6.3 d/ je travaille en php5 e/ j'ai activé les extensions php_interbase.dll ,php_pdo.dll et php_pdo_firebird.dll.
2.a/ mon code "connexion.php" avec PDO est :
<?php $user='SYSDBA'; $pass='masterkey'; $connexion = new PDO ('firebird:dbname=C:\\data\\SUIVITEMPS_24102006.FDB', $user, $pass); //TEST DE LA CONNEXION $sql = 'SELECT nom, prenom from AGENTS2'; foreach ($connexion->query($sql) as $row){ print_r($row); }
2.b/ le message d'erreur suivant m'est retourné :
Fatal error: Call to a member function query() on a non-object in C:\wamp\www\projet\connexionBd.php on line 43
3. J'ai tenté de me connecter en php sans le pdo, cela ne marche pas, mon code "connexion.php" est :
<?php $path='C:\\data\SUIVITEMPS_24102006.FDB'; $user='SYSDBA'; $pass='masterkey'; $connexion = ibase_connect($path,$user,$pass) or die('Connexion impossible à la base : ' . ibase_errmsg()); ?>
Cela ne marche toujours pas avec WAMP5 1.6.3 (mon client utilise Wamp), j'ai un nouveau message d'erreur :
J'ai testé cette syntaxe sous easyphp 1.8, ca marche !!!
J'ai lu sur un forum que cela pouvais venir du php.ini de Wamp, on m'a conseillé de modifier la ligne : "magic_quotes_sybase = Off" par "magic_quotes_sybase = On", mais cela ne marche toujours pas
y aurait il un autre paramètre du php.ini qu'il faudrait modifier ?
un autre point d'info en français : [www.lephpfacile.com] autre post intéressant " Installation réussie de Firebird+php+Ibmyadmin sous NT5": [www.developpez.net]
avec ces infos : add a note User Contributed Notes : Fonctions Firebird/Interbase PDO_FIREBIRD) Darren 08-Mar-2006 01:18 After much trial and error i found out you should use the following to connect to a firebird database: <?php $db = new PDO ("firebird:dbname=localhost:C:\\path\\to\\database\\MyDatabase.FDB", "username", "password" ?> NOTE: in the 1st part of the connection string there can be NO spaces else you will get NULL. The string provided on this site does not work and will give no error only NULL.
Tout d'abord merci pour ta réponse et bonne année 2007.
en fait j'avais déjà consulter pas mal des liens que tu m'as transmis, cela m'a permis de mieux comprendre le fonctionnement de firebird, mais ça n'a pas réglé mon problème.
C'est dernier temps je me suis orienté vers une solution bis, j'ai téléchargé un driver odbc firebird et je tente de me connecté via ce driver, j'ai donc :
1. télécharger le driver odbc firebird de Ibphoenix dispo à l'adresse suivante [www.ibphoenix.com]. 2. j'ai installé ce driver 3. j'ai créer une source de données système (panneau de config/outil d'administration/source odbc/source de données système). Dans cette source de données je définis : - la DSN (data source name) - le chemin de la base .FDB - le client (fbclient.dll ou gds32.dll) - l'utilisateur - le mot de passe Dans cette interface je peux tester la connexion, avec fbclient.dll comme client la connexion ça fonctionne, alors qu'avec gds32.dll j'ai le message d'erreur suivant "unavailable database". 4. il me suffit de me connecter via le script suivant <?php $connexion = new PDO ("odbc:fbOdbc" ?>
Au final, après de nombreux tests :
Sous Wamp5, ca ne marche toujours pas, j'ai le message suivant : Erreur ! : SQLSTATE[08004] SQLConnect: 0 unavailable database J'ai lu que SQLSTATE 08004 correspond - soit à un utilisateur non autorisé (je me logue en super utilisateur!!!) - soit le script ne trouve pas la base (easyphp la trouve lui!!!)
Sous Easyphp 2 ca fonctionne bien !!!
Je ny comprend plus rien. Jai vraiment tenté tous ce que je pouvais, jai même essayé de remplacer les dll (php_pdo_odbc.dll,php_pdo.dll et php_interbase.dll) de wamp par celles deasyphp, cette fois il ne retrouve pas les driver pdo, normal.
Je ne sais plus quoi faire. Je ne peux pas refaire toute la config du serveur de mon client, il a des appli qui tournent en delphi sur firebird et dautre en php qui tourne sur postgres, je risque d'y passer beaucoup de temps et je n'en ai plus des masses.
Dans ce cas, reprend EasyPHP 1.8 pour ton client. Comme ça tu auras plus de temps pour savoir pourquoi ça marche pas sur WAMP et quand tu auras trouvé, tu pourras faire la mise à jour.
Personnellement, je n'ai pas trouvé de solution pour me connecter à firebird via Wamp5, que se soit avec Pdo, en direct ou via une connexion ODBC. J'ai contourner le pb, si ca peut t'aider voila ce que j'ai fait ?
Dans mon cas, je devais me connecter à firebird pendant quelques mois, en attendant la migration de mon client vers postgresql, c'est pourquoi j'ai tenté de me connecter avec le PDO.
Au final, je me suis connecter direct sur Postgres et j'utilise "Pentaho Data Integration: Kettle Project" pour interfacer les deux bases, mise à jour de postgres à partir des données de firebird 1 fois par jour via une tache planifier (dispo à l'adresse suivante [kettle.pentaho.org]).
Je te remercie de m'avoir répondue, et grâce à un collègue de l'entreprise, j'ai réussi à me connecter. Il a fait un changement sur le php.ini celui que j'avais fait sur le mauvais php.ini. Car moi aussi j'ai lu sur un forum qu'il fallait modifier des paramètres sur ce fichier, mais au lieu de prendre celui de : ...\wamp\Apache2\bin, j'ai pris celui de : ...\wamp\php.
Je pense que ce n'était que cela le problème pour ma connexion.