PHP et MS SQL Server

Ce document traite de l'installation de l'extension PDO_DBLIB afin de pouvoir interroger un serveur MS SQL Server.

Note :

  • Cette documentation s'appuie sur le système Ubuntu 7.10 Gutsy Gibbon, mais reste compatible avec tout système proposant PEAR et l'outil PECL ;
  • Le support MSSQL dans PHP 5 n'est pas nécessaire pour profiter d'une connectivité MSSQL via PDO_DBLIB ;

Contexte

Dans le cadre de projet, certains ont la nécessité d'interroger une machine hébergeant le produit SQL Server. PHP 5 propose depuis la version 5.1 une extension qui permet de manipuler simplement des bases de données par l'intermédiaire d'une couche d'abstraction : PDO (PHP Data Objects).

En standard, les paquets PHP 5 des systèmes proposent les extensions PDO (c'est le cas de MySQL avec le paquet php5-mysql*). Cependant, ce n'est pas le cas pour les connexions MSSQL. Dans ce cas, il est alors nécessaire de passer par plusieurs produits permettant de construire le flux MSSQL, en autre PDO_DBLIB (couche MSSQL pour PDO) et FreeTDS (la bibliothèque système libre permettant la connexion MSSQL).

Pré-requis

Avant tout, des paquets système de bases sont nécessaires, il sera possible de les désinstaller par la suite :

  • php5-dev : les headers de php5 (c'est à dire les fichiers .h), qui inclus un certain nombre de dépendances ;
  • make.

D'autre pré-requis sont aussi nécessaires :

  • PEAR : le gestionnaire de sources PHP en ligne, qui inclus PECL ;
  • PDO : l'extension PHP disponible via PEAR ;
  • FreeTDS : la bibliothèque système gérant les flux MSSQL, entre autre.

Les commandes :

$ sudo apt-get install php5-dev make
$ sudo apt-get install php-pear
$ sudo apt-get install libsybdb5 freetds-dev
$ pecl upgrade
$ pecl install PDO

Note : FreeTDS est proposé par les paquetslibsybdb5 et freetds-dev, qui dépendent de libct3.

Il se peut que la commande pecl n'arrive pas à se connecter à Internet, si le réseau nécessite un proxy de sortie. Dans ce cas, rien de plus simple :

$ sudo pecl config-set http_proxy proxy:80

Installation

L'installation de PDO_DBLIB échoue lorsqu'il s'agit de l'installer via la commande classique pecl install PDO_DBLIB. Le problème est résolu en appliquant les étapes suivantes.

$ cd /tmp
$ pecl download PDO_DBLIB
$ tar zxvf PDO_DBLIB-1.0.tgz
$ pecl build
$ cd PDO_DBLIB-1.0
$ ./configure
$ make

Une fois les sources construites, il s'agit de copier la bibliothèque système dynamique créée afin de l'activer dans PHP.

$ pwd
/tmp/PDO_DBLIB-1.0
$ cp ./modules/pdo_dblib.so /usr/lib/php5/2006*/
$ cd /tmp
$ rm -rf PDO_DBLIB*

Pour finir, il ne reste plus qu'à créer le fichier adéquate pour charger l'extension dans PHP. Il s'agit du fichier /etc/php5/conf.d/pdo_dblib.ini qui va contenir l'unique ligne suivante :

extension=pdo_dblib.so

Discussion

Entrer votre commentaire
Si vous ne pouvez déchiffrer le code, téléchargez ce fichier .wav pour l'entendre.