Connexion ODBC Linux vers AS400 via PHP
NB: Cela fait 3 ans que j’ai réalisé ce document, il se peut donc que des liens et/ou informations ne soient plus à jour.
Installation sur serveur LINUX (GNU/Linux Debian)
Voici les différents programmes à installer à l’aide de la commande « apt-get install » :
- apache
- mysql-server
- unixodbc
- unixodbc-dev
- alien
Tous ces programmes se trouvent déjà être sous forme de package pour la distribution GNU/Linux Debian, ce qui permet d’éviter les étapes de compilation.
Utilisation via PHP4
Pour la version 4 de php, il vous suffit d’installer les packages suivants via la commande aptget install.
# apt-get install php4
# apt-get install php4-mysql
# apt-get install php4-odbc
Utilisation via PHP5
Il est également possible d’utiliser PHP5, mais pour ce faire, vous devrez le compiler, vous même, avec le support ODBC. Il faudrait installer le package suivant :
# apt-get install libmysqlclient-dev
Il faut récupérer les sources de php5 sur le site http://www.php.net, Voici ma ligne de configuration pour la compilation de PHP5
# ./configure –with-mysql –with-unixODBC –with-exec –with-apxs=/usr/bin/apxs –withxml –with-zlib –with-snmp
Ne pas oublier de terminer par un
# make
# make install
Téléchargement des drivers ODBC venant directement de chez IBM
http://www14.software.ibm.com/webapp/download/preconfig.jsp?id=2002-12-22+21%3A28%3A37.831731R&S_TACT=104CBW71&S_CMP=&s=
Voici comment installer ce package sous GNU/Linux Debian
# alien -i iSeriesODBC-5.1.0-0.16.i386.rpm
Post-Installation
Création d’un lien symbolique permettant l’accès au driver
root@serveur : # ln -sf /opt/ibm/iSeriesODBC/lib/libcwbcore.so /usr/lib/libcwbcore.so
root@serveur : # ldconfig
Configuration ODBC
Le fichier odbcinst.ini (/etc/odbcinst.ini)
[iSeries]
Driver = /opt/ibm/iSeriesODBC/lib/libcwbodbc.so
Setup = /opt/ibm/iSeriesODBC/lib/libcwbodbc.so
Threading = 2
FileUsage = 1
DontDLClose = 1
Le fichier odbc.ini (/etc/odbc.ini)
[borprd]
Description = Connexion ODBC sur un AS400
Driver = iSeries
System = 10.15.100.100
Connexion via PHP
<?
$dsn = borprd; /* Nom du lien ODBC mis dans le fichier de configuration odbc.ini */
$user = monuser; /* Votre nom d’utilisateur AS400 */
$passwd = xxxx; /* Mot de passé AS400 */
$conn = odbc_connect($dsn,$user,$passwd );
echo “Id de connexion: $conn”;
if ($conn <= 0) {
echo “Error in connection<BR>”;
exit;
}
else {echo “<P>Connection successful\n\n”;};
$query = “SELECT * FROM monuser.t011″; /* Lecture d’une table de l’AS400 */
$result = odbc_Exec($conn, $query);
odbc_result_all($result);
odbc_close($conn);
?>
Bibliographies
http://www-1.ibm.com/servers/eserver/iseries/access/linux/
http://www.unixodbc.org/
http://www-128.ibm.com/developerworks/eserver/articles/es-linux_bestpract.html
http://www-912.ibm.com/s_dir/slkbase.NSF/0/ec0d149f59aafe8a86256cca00682ad4?OpenDocument
http://www.e-gineer.com/instructions/installing-ibm-db2-for-php4x-with-apache13x-on-linux.phtml

mai 30th, 2008 at 10:25
Bonjour,
Merci pour ce tuto assez complet.
Néanmoins PHP me renvoie l’erreur suivante :
[code]Warning: odbc_connect() [function.odbc-connect]: SQL error: [unixODBC][Driver Manager]Can’t open lib ‘/usr/lib/libcwbcore.so’ : libstdc++.so.5: cannot open shared object file: No such file or directory, SQL state 01000 in SQLConnect in /var/www/a.php on line 10[/code]
J’ai essayé avec le chemin complet (/opt/ibm/iSeriesAccess/lib/libcwbodbc.so), et en attribuant tous les droits aux fichiers, sans plus de résultat.
Y’aurait-t-il quelque chose à rajouter dans PHP.ini ?
Sinon je ne vois pas d’ou peut venir le problème.
PS : Pour info, je n’ai pas recompilé PHP5 (car configuration particulière), mais installé le paquet php5-odbc
Merci d’avance pour vos lumières ^^