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

Catégorie: Serveurs cloud

Debian PHP

Mssql freetds php debian

IntroductionCet

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 ServerLa

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

Quelles sont les principales garanties des certificats SSL?

Les certificats SSL ne sont plus une option facultative, mais sont devenus un élément essentiel de la sécurisation des sites...

En savoir plus

Découvrez comment nous avons corrigé une erreur de blocage lors de la mise à niveau d'ESXi 6.5 vers 7.0 update 2 via vSphere Lifecycle Manager ici.

Kinamo maintient plusieurs clusters VMware vSphere, non seulement pour notre propre infrastructure, mais aussi pour divers clients. Comme vous le...

En savoir plus

Mac Mail: configuration des serveurs e-mail (IMAP) et serveur sortant (SMTP).

Suivez les étapes suivantes pour configurer votre adresse e-mail Kinamo dans l'application Mac Mail pour OS X. Vous pourrez ensuite...

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