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

Hoe de taal van Kinamo webmail aanpassen

Dit FAQ-artikel legt uit hoe je de taal van de gebruikersinterface kunt aanpassen in Kinamo Webmail

En savoir plus

Puis-je vérifier mon e-mail en ligne (par webmail)?

Si vous avez une adresse e-mail chez Kinamo, vous pouvez consulter votre boîte aux lettres en ligne en vous rendant...

En savoir plus

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

Avez-vous une adresse e-mail chez Kinamo ? Découvrez ici comment créer un filtre spécial via Kinamo Webmail pour garder les...

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!

Kinamo

Sélectionnez votre langue

Toutes les langues: