Bonjour
j’essaye vainement d’installer des pilotes odbc ou jdbc si ça existe pour requêter la base de données d’un as400.
j’ai déjà essayé plusieurs tuto sans succès.
est ce que quelqu’un a une expérience sur le sujet.
merci
Bonjour
j’essaye vainement d’installer des pilotes odbc ou jdbc si ça existe pour requêter la base de données d’un as400.
j’ai déjà essayé plusieurs tuto sans succès.
est ce que quelqu’un a une expérience sur le sujet.
merci
C’est une DBase2?
Il te faut trouver un pilote ODBC pour dbase2 et l’installer puis faire une entrée dans le odbc.ini correspondant. Mais tout cela dépend du pilote ODBC. DBase doit te fournir la configuration.
la seule solution que j’ai trouvé et essayé sans succès est d’installer le paquet .rpm fourni par ibm qui contient tout le pack ‘iseries access’. mais il y avait eu des messages d’erreurs à l’install et depuis php je n’arrivais pas à connecter la base.
sur le site de php.net ce n’est pas très clair, je ne comprends pas bien si ils conseillent d’installer des paquets pour l’os ou des modules de php.
Tu as deux choses: le connecteur ODBC et l’interface php/odbc.
La seconde est fourni par php4-odbc ou php5-odbc, le premier est plus compliqué du fait que dbase est propriétaire. Concentre toi sur le connecteur ODBC (en le testant avec openoffice par exemple) puis après ça devrait rouler.
en parlant de php je me demandais si il n’y avait pas un module comme php-mysql et qui permet de s’affranchir de la conf odbc, mais je ne suis peut être pas sur le bon forum pour ça …
Procédure réalisée sur debian 4.0r4a-i386
tux3:~# apt-get install unixodbc unixodbc-dev alien php5 php5-odbc libstdc++5 apache2
tux3:~# /etc/init.d/apache2 force-reload
telechargement de iSeriesAccess-5.4.0-1.6.i386.rpm depuis ibm.com (laborieux à obtenir, je le joint au post, a non il est trop gros, désolé …)
tux3:~# alien -i iSeriesAccess-5.4.0-1.6.i386.rpm --scripts
tux3:~# ln -s /usr/lib/libstdc++.so.5 /opt/ibm/iSeriesAccess/lib/libstdc++.so.5
tux3:~# ldconfig
fichier /etc/odbcinst.ini
[iSeries]
Description = iSeries Access for Linux ODBC Driver
Driver = /opt/ibm/iSeriesAccess/lib/libcwbodbc.so
Setup = /opt/ibm/iSeriesAccess/lib/libcwbodbcs.so
NOTE1 = If using unixODBC 2.2.11 or later and you want the 32 and 64-bit ODBC drivers to share DSN's,
NOTE2 = the following Driver64/Setup64 keywords will provide that support.
Driver64 = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so
Setup64 = /opt/ibm/iSeriesAccess/lib64/libcwbodbcs.so
Threading = 2
DontDLClose = 1
UsageCount = 1
fichier /etc/odbc.ini
[i5plus]
Description = serveur Iseries (Movex)
Driver = iSeries
System = 192.168.1.1
fichier /var/www/test.php
<?php
//
$dsn = i5plus;
$user = #######;
$passwd = #######;
$conn = odbc_connect($dsn,$user,$passwd );
//
echo "votre id de connexion est : $conn";
//
if ($conn <= 0) { echo "\nErreur\n"; }
else { echo "\nSuccès\n"; }
//
odbc_close($conn);
//
?>
pour finir je lance depuis mon navigateur tux3/test.php, et Ô miracle de la technologie
votre id de connexion est : Resource id #2
Succès
merci moi.
@+
Bonjour,
Impossible de mettre la main sur ce fameux iSeriesAccess-5.4.0-1.6.i386.rpm. Est ce que quelqu’un la dans un coin pour le partager quelques secondes sur Internet ? Le site IBM part en time-out à chacun de mes essais :-/
Merci par avance,
j’ai le le fichier (3.4 Mo)
donne ton mail en MP
Merci ! je te contacte via MP
Bonjour,
Impossible de le faire fonctionner ici :
code Warning: odbc_connect() [function.odbc-connect]: SQL error: [unixODBC][Driver Manager]Driver’s SQLAllocHandle on SQL_HANDLE_HENV failed, SQL state IM004 in SQLConnect in /mnt/intranet/IE/test_db2/index.php5 on line 6
Call Stack
1 0.0050 240412 {main}( ) …/index.php5:0
2 0.0051 240412 odbc_connect ( ) …/index.php5:6
votre id de connexion est : Erreur
( ! ) Warning: odbc_close(): supplied argument is not a valid ODBC-Link resource in /mnt/intranet/IE/test_db2/index.php5 on line 13
Call Stack
1 0.0050 240412 {main}( ) …/index.php5:0
2 0.0780 240468 odbc_close ( ) …/index.php5:13[/code]
Ma configuration :
# dpkg -l | grep -i odbc
ii php4-odbc 4.4.2-1.1 ODBC module for php4
Mon /etc/odbc.ini
[base01db2]
Description = Connexion ODBC vers serveur 01
Driver = iSeries
System = 10.4.3.1
Mon /etc/odbcinst.ini
[iSeries]
Driver = /opt/ibm/iSeriesAccess/lib/libcwbcore.so
Setup = /opt/ibm/iSeriesAccess/lib/libcwbcore.so
Threading = 2
FileUsage = 1
DontDLClose = 1
Il ne me semble pas d’avoir un soucis coté des librairies :
# ldd /opt/ibm/iSeriesAccess/lib/libcwbcore.so
linux-gate.so.1 => (0xffffe000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7e0e000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7e0a000)
libstdc++.so.5 => /opt/ibm/iSeriesAccess/lib/libstdc++.so.5 (0xb7d4f000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7d29000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7d1e000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7bea000)
/lib/ld-linux.so.2 (0x80000000)
Voici mon code php :
<?php
//
$dsn = "base01db2";
$user = "usern@me";
$passwd = "passw0rd";
$conn = odbc_connect($dsn,$user,$passwd);
//
echo "votre id de connexion est : $conn";
//
if ($conn <= 0) { echo "\nErreur\n"; }
else { echo "\nSuccès\n"; }
//
odbc_close($conn);
//
?>
Quelqu’un aurait une idée ?
PS : merci pour le RPM thomas.leclerc
avec mon fichier /etc/odbcinst.ini (celui que j’ai mis dans la procédure ci dessus) ça devrait marcher
si je me rapelle entre le driver et le setup, il y a une difference.
le setup finit avec un ‘s’.
Finalement, cela à l’air de le faire :
[code]Warning: odbc_connect() [function.odbc-connect]: SQL error: [unixODBC][IBM][iSeries Access ODBC Driver]Communication link failure. comm rc=10061 - CWBCO1049 - The iSeries server application is not started, SQL state 08004 in SQLConnect in /mnt/intranet/IE/test_db2/index.php5 on line 5
Call Stack
1 0.0052 240640 {main}( ) …/index.php5:0
2 0.0052 240640 odbc_connect ( ) …/index.php5:5
votre id de connexion est : Erreur [/code]
Donc, cela part bien vers mon serveur DB2 et essaye de se connecter sur le port 8471 de mon serveur DB2. Malheureusement, rien ne tourne sur ce port, c’est une machine AIX avec une base DB2 tournant (il me semble) sur le port 5390 :-/ Une idée pour spécifier le port dans odbcinst.ini ?
essaye peut être
[base01db2]
Description = Connexion ODBC vers serveur 01
Driver = iSeries
System = 10.4.3.1
ServerPort = 10.4.3.1:8888
ou
[base01db2]
Description = Connexion ODBC vers serveur 01
Driver = iSeries
System = 10.4.3.1
ServerPort = 8888
sinon va voir sur http://www.unixodbc.org/
Rien à faire, cela n’en fait qu’a sa tête : ce sera le port 8471 et puis c’est tout. En fait, c’est une base DB2 sur AIX, je suppose que cela ne change rien à part que le port d’écoute sur 5390.
Pour changer le port, j’ai fait la modif dans le /etc/odbc.ini
ou
mais cela ne change strictement rien. Toutes mes tentatives de connexion partent vers le port 8471. J’avais déjà regardé le site unixodbc.org mais je ne trouve pas d’information intéressante.
[quote]si je me rapelle entre le driver et le setup, il y a une difference.
le setup finit avec un ‘s’. [/quote]
Je ne comprends pas ce que tu voulu dire :-/
dans odbcinst.ini les lignes drivers et setup ne sont pas les mêmes
le fichier pointé par la ligne setup fini par un ‘s’.
[quote=“thomas.leclerc”]dans odbcinst.ini les lignes drivers et setup ne sont pas les mêmes
le fichier pointé par la ligne setup fini par un ‘s’.[/quote]
ha oui, je vois la différence, c’était surement pour cela que cela ne fonctionnait pas au début, j’avais dû oublié ce ‘s’
dans le pire des cas, utilise iptable pour faire un port-forwarding.