-
Problème PHP + unixODBC
Bonjour,
J'essaye de me connecter à un AS400 depuis un serveur linux (mandriva 2006) en production
J'ai réussi à installé la connection ODBC sur une fedora 6 (php 5.1.6) avec ces éléments :
- unixODBC
- iSeriesAccess (d'IBM)
Tout marche très bien. J'ai fais la même chose sur le serveur de production (Mandriva 2006), mais là ça ne marche pas. iSeriesAccess est bien installé car j'arrive à visualiser mon serveur AS400 à distance grâce à la commande "isql -v MONSERVEUR" (ça c'est déjà bien ;-) ). Par contre depuis PHP je n'arrive pas à accéder à mon serveur, enfin, j'ai l'impression que PHP voit mal le paramétrage ODBC. (je suis sur un php 5.0 qui n'a pas pdo_odbc car trop ancien). Le module ODBC est bien monté, mais la valeur "ODBC library" est à vide (alors qu'il y a la valeur unixODBC dans le serveur où ça marche). Je pense que le problème vient de là. Pourtant j'ai même installé php-odbc, mais rien à faire.
Quelqu'un aurait-il une idée pour monter la librairie unixODBC dans le module ODBC de PHP (j'ai pourtant bien installé unixODBC). Est-ce que ça viendrait d'une version de php trop ancienne ?
Merci d'avance de votre aide.
;-)
-
Il est vrai que j'aurais peur avec un serveur sous mdv 2006 ! Je pense que cette version n'est plus maintenue depuis un moment ! Es-tu sûr de ne pas avoir des failles de sécurité non maintenues ? Il est tellement ancien qu'une migration directe vers 2010.0 me fait un peu peur. Pour ma part, je viens de la faire d'un 2008.1 vers 2010.0, j'ai peur, mais c'est passé. J'ai du faire une petite intervention sur mon fichier de commandes Iptables et tout est passé.
Pour ce qui est des problèmes purement php, je transfers ta question sur un forum plus approprié.
-
Bonjour,
Merci d'avoir transmis mon post vers un forum plus approprié
;-)
En effet mandriva 2006 commence à être vieille ! En fait il s'agit d'un serveur web hébergé par un prestataire, et il serait peut-être bon de migrer vers une distribution plus récente. C'est un gros chantier, et si je pouvais éviter ça seait quand même mieux (c'est un serveur de production).
J'ai continuer mes recherches de contrôle, je vous dis ce que j'ai compris (désfois que ça peut aider du monde).
unixODBC : permet d'installer ODBC sur le serveur. Grâce à la commande "odbcinst -j" on peut contrôler si ça fonctionne. Dans mon cas tout est OK.
iSeriesAccess : Il faut ensuite un odbc client pour se connecter vers une base différente (db2, sql, sql server ...) . pour ma part j'ai installé iSeriesAccess (db2) et on peut le contrôler grâce o la commande : "isql -v MONSERVER". Dans mon cas ça fonctionne.
php-odbc : Pour terminer il faut installer "php-odbc" afin que PHP puisse utiliser ODBC pour se connecter. C'est là où il doit y avoir un problème. J'utilise la commande "urpmi php-odbc" qui met aucune erreur d'installation. Il me crait bien le fichier de configuration "XX_odbc.ini" (contenant le texte "extension odbc.so et du texte de paramétrage") dans /etc/php.d/ afin de préciser à php de monter le module odbc.
Je relance le serveur web et consulte phpinfo(). Odbc est bien monté, je retrouve mon paramétrage (XXX_odbc.ini), mais par contre je n'ai aucune valeur dans les librairies et les path.
J'ai installé la même chose sur deux autres serveurs (fedora 6 et unbuntu) et ça marche tout bien du premier coup. Je peux alors contrôler la différence entre les config phpinfo() :
Serveur OK (fedora et unbuntu) :
ODBC Support enabled
Active Persistent Links 0
Active Links 0
ODBC library unixODBC
ODBC_INCLUDE -I/usr/include
ODBC_LFLAGS -L/usr/lib
ODBC_LIBS -lodbc
Serveur mandriva :
ODBC Support enabled
Active Persistent Links 0
Active Links 0
ODBC library no value
ODBC_INCLUDE no value
ODBC_LFLAGS no value
ODBC_LIBS no value
Apparemment il ne me trouve pas mes librairies unixODBC (à moins qu'il n'est pas capable de l'afficher, mais ça m'étonnerai).
Quelqu'un aurait-il une idée ? Je pense qu'on est pas loin de la vérité.
;-)
Merci.
-
Sur ma 2010.1 (cooker), j'ai des rpm du nom de php-odbc, mysql-connector-odbc;lib(64)unixODBC... en plus de unixODBC
-
php-odbc permet en effet de faire le lien entre PHP et ODBC. C'est ça qui pose un problème je pense. Il s'installe bien, du coup quand je relance apache j'ai bien le moduel ODBC d'installé si je fait un phpinfo(). Par contre il est incomplet car il ne trouve pas la librairie unixODBC. Cette dernière est bien installé car en ligne de commande elle fonctionne ("odbcinst -j" et "isql -v MONSERVEUR" fonctionnent).
En fait j'ai l'impression que c'est php qui ne voit pas bien unixODBC.