Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/09/2013, à 12:42

mistabaltha

accéder à une base externe avec ADODB en PHP

Bonjour,

je viens lancer un appel au secours car depuis hier j'en perd mon latin, je m'explique:

Je travaille sur un service intranet en php.
Je développe d'abord en locale, sur une machine sous Windows (je sais c'est mal) avec wamp, puis je transfert sur un serveur de production sous ubuntu 12, donc une histoire très classique jusque là.

Là où ça se complique, c'est que je dois accéder à une base de donnée qui est sur une machine IBM AS/400.
Pour ce faire je me sers en PHP de la classe ADOdb, qui fonctionne très bien sous Wamp, par contre dès que je transfert les fichiers sur Ubuntu impossible de connecter la base.

Ci-dessous le code PHP grâce auquel je connecte la base et qui fonctionne bien sous Wamp:

    $db = ADONewConnection('odbc');
    $dsn = "DRIVER={iSeries Access ODBC Driver};SYSTEM=$Host;DATABASE=$DBName;"; 
 
     if ($db->Connect($dsn,$User,$Password)){
        echo "Connexion &eacute;tablie.<br />";
     }
     else {
         echo "D&eacute;connect&eacute; du serveur<br />". mysql_error();
         echo 'SQLSTATE: '.$db->ErrorNo()."<br>";
         echo 'Message: '.$db->ErrorMsg()."<br><br>";
     }  

Ma config sous Wamp:
Apache 2.4.4
PHP 5.4.12
Le tout sur windows 7

Ma config Ubuntu:
Ubuntu 12.04.3 LTS en x64
kernel 3.5.0-23-generic
Apache 2.2.22
PHP 5.3.10

Le plus bizarre est que je n'ai pas de message d'erreur, seulement le echo "Déconnecté du serveur".
L'affichage des erreurs est activé dans mon php.ini...
Un nmap sur mon serveur ainsi que sur mon poste de dev me donne les mêmes résultats.

Une recherche Google sur une config spécifique pour laisser sortir une connexion ne m'a rien donné de concret.
J'ai installé php5-odbc mais je ne trouve pas le pilote IBM correspondant. Même combat pour unixodbc. Cependant, du fait que mon pilote ADOdb fonctionne en local je ne suis pas certain que celui-ci soit source du problème, mais je peux évidemment me tromper.

Je me pose alors plusieurs questions:
- Y a-t-il qqchose à faire côté par-feu pour laisser sortir la tentative de connexion?
- Une nouveauté dans Ubuntu 12, que je n'aurais pas relevé?
- un rapport avec mes version Apache ou PHP, par rapport à ADOdb?
- dois-je abandonner l'informatique car je suis très mauvais?

Merci d'avance...

Dernière modification par mistabaltha (Le 10/09/2013, à 14:33)

Hors ligne

#2 Le 10/09/2013, à 16:56

bruno

Re : accéder à une base externe avec ADODB en PHP

Le paquet php5-adodb est-il installé ?

#3 Le 10/09/2013, à 17:12

mistabaltha

Re : accéder à une base externe avec ADODB en PHP

Rebonjour,

bruno a écrit :

Le paquet php5-adodb est-il installé ?

Oui, il l'est...

Hors ligne

#4 Le 10/09/2013, à 17:30

bruno

Re : accéder à une base externe avec ADODB en PHP

Apparemment il faut aussi avoir libphp-adodb installé pour utiliser cela.

#5 Le 11/09/2013, à 07:47

mistabaltha

Re : accéder à une base externe avec ADODB en PHP

bruno a écrit :

Apparemment il faut aussi avoir libphp-adodb installé pour utiliser cela.

Installé aussi...

Mais cela ne m'explique pas pourquoi ma classe adodb fonctionne bien sous wamp et pas sous ubuntu.
J'utilise couramment cette classe sous cette config (dev sous wamp et prod sous ubuntu) et c'est la première fois que je rencontre ce soucis...

Une idée?

Hors ligne

#6 Le 11/09/2013, à 08:05

bruno

Re : accéder à une base externe avec ADODB en PHP

La différence entre WAMP et Lamp c'est souvent les modules PHP installés (d(où mes questions précédentes) et aussi les fichiers de configuration : php.ini et autres dans conf.d.
As-tu examiné les logs sur ton serveur ubuntu pour voir s'il y a plus d'infos ?
Si tu penses qu'il s'agit d'un problème de connexion, tu peux désactiver temporairement le pare-feu d'Ubuntu pour vir si cela change quelque chose.
Tu peux aussi modifier ton code pour voir si les messages d'erreur sont plus bavards :

  try { 
           $db = NewADOConnection('odbc'); 
           $db->Connect($dsn,$User,$Password); 
  } catch (exception $e) { 
           var_dump($e); 
           adodb_backtrace($e->gettrace());
  } 

#7 Le 11/09/2013, à 09:33

mistabaltha

Re : accéder à une base externe avec ADODB en PHP

Merci beaucoup Bruno de t'intéresser à mon problème!!!

bruno a écrit :

Si tu penses qu'il s'agit d'un problème de connexion, tu peux désactiver temporairement le pare-feu d'Ubuntu pour vir si cela change quelque chose.

Une des première choses que j'ai essayé, aucun changement...

bruno a écrit :

As-tu examiné les logs sur ton serveur ubuntu pour voir s'il y a plus d'infos ?

Bien vu!
Le rapport d'erreur m'a fait farfouiller dans le php.ini pour une erreur de syntaxe et je me suis rendu compte que le display error était désactivé (je sais je mérite le fouet, je pensais pourtant l'avoir mis sur On)...
Du coup j'ai le message d'erreur suivant:
Warning: odbc_connect() [function.odbc-connect]: SQL error: [unixODBC][Driver Manager]Data source name not found, and no default driver specified, SQL state IM002 in SQLConnect in /var/www/intranet/tools/include/adodb5/drivers/adodb-odbc.inc.php on line 64
Déconnecté du serveur
SQLSTATE: IM002
La connexion ne se fait pas mais au moins j'ai un semblant de piste...

bruno a écrit :

La différence entre WAMP et Lamp c'est souvent les modules PHP installés (d(où mes questions précédentes) et aussi les fichiers de configuration : php.ini et autres dans conf.d.

Penses-tu qu'il est judicieux de creuser de ce côté là? Je pense que je vais comparer les php.ini afin de vérifier que tous les modules activés sous wamp le soient aussi sur ubuntu...


bruno a écrit :

Tu peux aussi modifier ton code pour voir si les messages d'erreur sont plus bavards :

Du coup avec le php.ini sans erreur c'est forcément plus bavard mais pas d'info supplémentaires...

Hors ligne

#8 Le 12/09/2013, à 17:16

bruno

Re : accéder à une base externe avec ADODB en PHP

Je n'ai pas de solution à ton problème, mais tu devrais regarder du côté des fichier /etc/odbc.ini et /etc/odbcinst.ini. Visiblement odbc ne trouve pas le pilote approprié pur se connecter à ton serveur IBM.