Dans ce tutoriel nous allons voir comment installer PHP 8.0, le pilote ODBC de Microsoft, Apache et les différents pilotes Microsoft SQL Server pour PHP sous Debian 9/10/11
Première étape : Installer PHP8
sudo su
apt-get install curl apt-transport-https
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
apt-get update
apt-get install -y php8.0 php8.0-dev php8.0-xml php8.0-intl
Deuxième étape : Installer les ODBC Driver
sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
Choisir le package qui correspond à votre version
Pour Debian 9 :
curl https://packages.microsoft.com/config/debian/9/prod.list > /etc/apt/sources.list.d/mssql-release.list
Pour Debian 10 :
curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
Pour Debian 11 :
curl https://packages.microsoft.com/config/debian/11/prod.list > /etc/apt/sources.list.d/mssql-release.list
Après avoir installé la bonne version du package Debian il ne vous reste plus qu’à mettre vos packages à jour et installer le package “unixodbc-dev“
exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17
sudo apt-get install -y unixodbc-dev
Troisième étape : Génération des paramètres régionaux
sudo su
sed -i 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/g' /etc/locale.gen
locale-gen
Quatrième étape : Installation des pilotes PHP pour Microsoft SQL Server
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.0/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.0/mods-available/pdo_sqlsrv.ini
exit
sudo phpenmod -v 8.0 sqlsrv pdo_sqlsrv
Remarque : Si vous n’avez qu’une version de PHP installer dans le système, la dernière commande peut être raccourcie en « phpenmod sqlsrv pdo_sqlsrv »
Cinquième étape : Installation de Apache et configuration du chargement du pilote
sudo su
apt-get install libapache2-mod-php8.0 apache2
a2dismod mpm_event
a2enmod mpm_prefork
a2enmod php8.0
sudo service apache2 restart
La procédure d’installation est maintenant terminée, vous pouvez désormais effectuer des requêtes vers une base de données SQL Server sans problème.
Comment tester si les pilotes sont bien activés ?
Pour vérifier si les pilotes sont bien installés, utilisez la fonction PHP PDO::getAvailableDrivers() ; celle-ci vous retournera la liste des pilotes PDO disponibles :
print_r(PDO::getAvailableDrivers());
Résultat de l’exemple ci-dessus est similaire à :
Array
(
[0] => mysql
[1] => sqlsrv
)
Votre pilote (sqlsrv) est alors bien activé.
File d’attente de connexion et performance SQL Server
Comme indiqué dans la doc PHP.net (sqlsrv_connect) ; par défaut, la fonction PHP sqlsrv_connect() utilise la file d’attente de connexion au serveur afin d’augmenter les performances. Pour désactiver cette file d’attente (i.e. et ainsi, forcer une nouvelle connexion à chaque appel à la fonction), définissez l’option “ConnectionPooling” dans le tableau $connectionOptions à 0 (ou false).
Sous Debian, modifiez le fichier odbcinst.ini (/etc/odbcinst.ini) en ajoutant Pooling=No :
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.8.so.1.1
UsageCount=1
[ODBC]
Pooling=No