Connexion avec Microsoft SQL Serveur à partir de PHP sur Debian via FreeTDS

Dernière mise à jour sur 28 sept. 2023 à 10:18:04.
Catégorie: Serveurs cloud

Debian PHP

Mssql freetds php debian

Introduction

Cet article explique les étapes nécessaires pour se connecter depuis PHP sur un serveur Linux Debian à une base de données Microsoft SQL Server.
Nous utiliserons FreeTDS et unixODBC à cette fin.

Installation des packages nécessaires avec apt-get

Les packages Debian suivants sont nécessaires :

freetds-bin - FreeTDS command-line utilities
freetds-common - configuration files for FreeTDS SQL client libraries
unixodbc - Basic ODBC tools
php5-sybase - Sybase / MS SQL Server module for php5

Comme vous pouvez le voir, php5-sybase est en effet nécessaire ! Ce n'est pas une erreur :-)
L'installation des packages est facile via une seule ligne de commande, avec apt-get install

sudo apt-get install freetds-common freetds-bin unixodbc php5-sybase

Après l'installation, redémarrez le service Web (apache2) :

sudo service apache2 restart

Test de la connexion FreeTDS à Microsoft SQL Server avec tsql

Vérifier si l'installation de tous les composants (freetds, unixodbc) s'est correctement terminée peut se faire via la commande tsql :

tsql -H yourserverhostname -p 1433 -U username -P password -D database

Si vous obtenez une connexion, les composants fonctionnent. Vous pouvez tester une requête via :

USE database
GO
SELECT * FROM Table;
GO
EXIT

Attention, si vous faites une sélection sur un champ nvarchar ou ntext vous pouvez avoir une erreur : "Les données Unicode dans un classement Unicode uniquement ou les données ntext ne peuvent pas être envoyées aux clients utilisant DB-Library (comme ISQL) ou ODBC version 3.7 ou plus tôt".
C'est normal, vous pouvez résoudre ce problème en éditant le fichier freetds.conf (la configuration FreeTDS).

sudo vi /etc/freetds/freetds.conf

Vous pouvez ajouter une section au fichier de configuration pour votre propre serveur ou instance de base de données :

# Kinamo SQL Server
[yoursqlserver]
 host = yoursqlserver.poweredby.kinamo.be
 port = 1433
 tds version = 8.0

En spécifiant la version "8.0" de TDS, vous évitez l'erreur Unicode.

Tester la connexion FreeTDS par nom de serveur ou d'instance

Vous pouvez maintenant exécuter à nouveau la commande tsql, cette fois avec le paramètre -S au lieu de -H.
Par exemple, vous vous connectez sur le nom du serveur ou le nom de l'instance au lieu du nom d'hôte complet, et FreeTDS utilisera les paramètres que vous avez spécifiés, y compris la version de TDS.

tsql -S yoursqlserver -U username -P password -D database

Tester une connexion de PHP à Microsoft SQL Server

La dernière étape consiste à tester votre connexion depuis PHP. Cela peut se faire de différentes manières : via les extensions PDO, via mssql...
L'exemple ci-dessous montre comment cela peut être fait via PDO :
<?php
 
$db = new \PDO('dblib:host=yoursqlserver.poweredby.kinamo.be;dbname=database', 'username', 'password');
return $db;

?>
Attention, si vous obtenez une erreur : PDOException "could not find driver" vous vous connectez peut-être à PDO('mssql...); au lieu de PDO('dblib...);
Cela dépend de votre système d'exploitation quel pilote vous devez utiliser, sur Debian c'est dblib !

Articles connexes

Paramètres des serveurs mail Kinamo (feuille de triche)

L'article suivant vous donne un résumé de la configuration et noms du serveurs mail de Kinamo. Avec la liste ici...

En savoir plus

Créer un filtre anti-spam avec le Kinamo Webmail

L'article suivant vous explique comment ajouter un filtre spécial pour mettre des messages SPAM automatiquement dans un dossier dans votre...

En savoir plus

Acheter un certificat SSL? Qu'est un certificat SSL?

Vous voulez acheter un certificat SSL? Mais, c'est quoi un certificat SSL? Et pourquoi est-ce que tous le monde dit...

En savoir plus

Besoin d'aide supplémentaire?

Vous n'avez pas obtenu de réponse à toutes vos questions?
Ne vous inquiétez pas, faites une demande d'assistance!

Sélectionnez votre langue

Toutes les langues: