Base de données · 3 min read · Oct 25, 2025

Accès PHP à une base de données MSSQL depuis Debian Etch avec ODBC et FreeTDS

Accès PHP à une base de données MSSQL depuis Debian Etch avec ODBC et FreeTDS

Cela suppose que vous avez déjà Apache2 et PHP5 correctement configurés sur votre système. Mes efforts pour établir cette connexion ont été compilés à partir d’informations trouvées sur www.unixodbc.org et www.freetds.org. Ces étapes ont fonctionné pour moi avec un serveur web Apache2 avec php5 fonctionnant sur Debian Etch stable en octobre 2007. Le serveur SQL fonctionne avec Microsoft SQL 2005 sur un système d’exploitation Windows 2003 Server.

Dans ces instructions, je suppose que vous êtes connecté en tant que compte root. J’utilise également joe comme éditeur, donc remplacez-le par votre éditeur de choix.

Tout d’abord, installez les paquets nécessaires :

#apt-get install tdsodbc libct3 unixodbc php5-odbc

Cela devrait télécharger et installer unixODBC, FreeTDS et les extensions odbc pour php5.

Ensuite, nous créons des modèles pour enregistrer le pilote ODBC pour FreeTDS et pour créer le DSN ODBC pour FreeTDS. Vous pouvez placer ces fichiers où vous le souhaitez, car vous utiliserez “odbcinst” pour configurer réellement le système. J’ai choisi de les placer dans /etc/freetds où se trouvent les fichiers de configuration tds.

Enregistrement du pilote ODBC :

#joe /etc/freetds/tds.driver.template

Puis collez ceci dans l’éditeur :

[TDS]
Description     = Pilote FreeTDS pour Linux & MSSQL sur Win32
Driver          = /usr/lib/odbc/libtdsodbc.so
Setup           = /usr/lib/odbc/libtdsS.so

Maintenant le DSN :

#joe /etc/freetds/tds.dsn.template

Puis collez ceci dans l’éditeur :

[DSN_NAME]
Description     = Test à freeTDS
Driver          = TDS
Trace           = Non
Database        = DefaultDatabase [remplacez par le nom de votre base de données]
Server          = mysqlserver.inter.net [remplacez par l'hôte de votre serveur SQL]
Port            = 5050 [remplacez par le port sur lequel SQL écoute]

D’accord, maintenant vous devez insérer ces modèles dans le système unixODBC :

#odbcinst -i -d -f /etc/freetds/tds.driver.template
#odbcinst -i -s -f /etc/freetds/tds.dsn.template

Un problème que j’ai eu à ce stade est que le DSN a été installé dans les paramètres odbc personnels du compte root. Comme je ne peux pas me connecter en tant que www-data pour exécuter la commande d’installation du dsn, j’ai simplement copié le fichier .odbc de root dans /etc/odbc.ini, qui est le fichier DSN à l’échelle du système que tous les utilisateurs peuvent référencer.

#mv /etc/odbc.ini /etc/odbc.ini.bak  [au cas où vous en auriez d'autres]
#cp /root/.odbc.ini /etc/odbc.ini

Maintenant, vous devez activer l’extension odbc dans php en modifiant votre fichier php.ini. À moins que vous n’ayez effectué une sorte de construction ou d’installation personnalisée, le fichier ini php devrait se trouver dans le répertoire /etc/php5/apache2/, donc :

#joe /etc/php5/apache2/php.ini

La meilleure pratique consiste à ajouter ceci à la section des extensions du fichier php.ini :

extension = odbc.so

Maintenant, vous devez redémarrer Apache pour que les modifications php soient prises en compte dans le système.

#/etc/init.d/apache2 restart

Cela devrait être tout. En supposant que vous ayez une connectivité avec la machine MSSQL, vous devriez pouvoir tester cette configuration en utilisant isql. En utilisant les paramètres ci-dessus et un nom d’utilisateur de Bob avec un mot de passe de Marley, voici le test :

#isql -v DSN_NAME Bob Marley

Vous devriez obtenir l’invite SQL> et vous pouvez exécuter toutes les commandes de sélection ou autres que vous souhaitez. Maintenant, passons à la partie PHP. Tout ce que vous devez faire (encore une fois en supposant les exemples ci-dessus) est d’ajouter les informations de connexion à votre fichier php et de commencer à coder. Ce qui suit est un exemple de base que vous devrez bien sûr adapter à vos besoins.

Si vous avez des problèmes, commencez par un dépannage réseau de base. Assurez-vous que vous pouvez pinger le serveur depuis votre boîte Debian. Essayez de vous connecter au serveur et au port sur lequel MSSQL écoute. Si cela fonctionne, vous devriez obtenir un écran vide dont vous devez sortir. Après cela, si l’exemple isql fonctionne mais que votre connexion php ne fonctionne pas, je ne suis pas sûr où vous orienter.

Bonne chance !

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.