PHP+ODBC pour accéder à un serveur MS SQL
J’ai dû récemment mettre en place de quoi attaquer un server Microsoft MS SQL Server 2000 depuis une plateforme Linux/Apache/PHP. Sous Debian Etch il existe le module php5-sybase censé géré Sybase et MSSql. Le problème c’est que php est compilé sans le support de sqlserver. Du coup il restait soit ODBC soit recompiler PHP m’obligeant à recompiler PHP à chaque mise à jour d sécurité… J’ai donc choisi ODBC. Dans un premier temps on installe le module PHP :
# apt-get install php5-odbc
Par un appel à phpinfo(); on vérifie que odbc est bien géré. Ensuite on installe freetds qui est la couche sur laquelle ODBC s’appuie pour gérer MSSQL :
# apt-get install freetds-dev
Puis dans le fichier /etc/freetds/freetds.conf on définit le serveur SQL Server :
[ServerBDDMS]
host = 192.168.1.14
port = 1433
tds version = 7.0
# On installe odbc version Unix : # apt-get install tdsodbc unixodbc Dans le fichier/etc/odbcinst.ini on définit un pilote pour notre connexion :
[FreeTDS]
Description = Connexion MsSQL
Driver = /usr/lib/odbc/libtdsodbc.so
Setup = /usr/lib/odbc/libtdsS.so
FileUsage = 1
CPTimeout = 5
CPReuse = 5
Enfin le fichier /etc/odbc.ini contient un nom de connexion et le nom de la base. Et surtout on y indique les pilote odbc et nom de serveur définits plus haut.
[ClientX]
Description = Produits du client
Driver = FreeTDS
Servername = ServeurBDDMS
Database = produits_client
Si tout est ok la commande : isql -v client X doit fonctionner par conséquent le code PHP correspondant également. Il est possible de tester avec ce code-ci :