Tutoriel : Installation sur Linux et macOS des pilotes Microsoft pour PHP pour SQL Server

Les instructions suivantes supposent que votre environnement est sain. Elles montrent comment installer PHP 8.1, le pilote ODBC Microsoft, le serveur Web Apache et les pilotes Microsoft pour PHP pour SQL Server sur Ubuntu, Red Hat, Debian, SUSE, Alpine et macOS. Ces instructions conseillent d’installer les pilotes à l’aide de PECL, mais vous pouvez également télécharger les fichiers binaires prédéfinis à partir de la page de projet GitHub des pilotes Microsoft pour PHP pour SQL Server et les installer en suivant les instructions fournies dans Chargement des pilotes Microsoft SQL Server pour PHP. Pour obtenir une explication concernant le chargement d’extension et savoir pourquoi nous n’ajoutons pas les extensions à php.ini, consultez la section sur le chargement des pilotes.

Les instructions suivantes installent PHP 8.1 par défaut en utilisant pecl install si les packages PHP 8.1 sont disponibles. Vous devrez peut-être d’abord exécuter pecl channel-update pecl.php.net. Certaines distributions de Linux prises en charge utilisent par défaut PHP 7.1 ou antérieur, qui n’est pas pris en charge pour la dernière version des pilotes PHP pour SQL Server. Consultez les notes au début de chaque section pour installer PHP 8.2 ou 8.3 à la place.

Vous trouverez également des instructions pour l’installation du gestionnaire de processus PHP FastCGI, PHP-FPM, sur Ubuntu. PHP-FPM est nécessaire si vous utilisez le serveur web nginx au lieu d’Apache.

Bien que ces instructions contiennent des commandes pour installer les pilotes SQLSRV et PDO_SQLSRV, les pilotes peuvent être installés et fonctionner de manière indépendante. Les utilisateurs familiarisés avec la personnalisation de leur configuration peuvent ajuster ces instructions pour être spécifiques à SQLSRV ou PDO_SQLSRV. Les deux pilotes ont les mêmes dépendances sauf dans les cas indiqués ci-dessous.

Reportez-vous à la Matrice de prise en charge pour connaître la dernière version des systèmes d’exploitation pris en charge.

Notes

Vérifiez que vous avez bien installé la dernière version du pilote ODBC pour garantir des performances et une sécurité optimales. Pour obtenir des instructions d’installation, consultez Installer le pilote ODBC de Microsoft pour SQL Server (Linux) ou Installer le pilote ODBC de Microsoft pour SQL Server (macOS).

Installation sur Ubuntu

Remarque

Pour installer PHP 8.2 ou 8.3, remplacez 8.1 par 8.2 ou 8.3 dans les commandes suivantes.

Étape 1. Installer PHP (Ubuntu)

sudo su
add-apt-repository ppa:ondrej/php -y
apt-get update
apt-get install php8.1 php8.1-dev php8.1-xml -y --allow-unauthenticated

Étape 2. Installer les prérequis (Ubuntu)

Installez le pilote ODBC pour Ubuntu en suivant les instructions fournies dans Installer Microsoft ODBC Driver for SQL Server (Linux). Assurez-vous d’installer également le package unixodbc-dev. Il est utilisé par la commande pecl pour installer les pilotes PHP.

sudo apt-get install unixodbc-dev

Étape 3. Installer les pilotes PHP pour Microsoft SQL Server (Ubuntu)

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.1/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini
exit
sudo phpenmod -v 8.1 sqlsrv pdo_sqlsrv

S’il n’y a qu’une version de PHP dans le système, la dernière étape peut être simplifiée en phpenmod sqlsrv pdo_sqlsrv.

Étape 4. Installer Apache et configurer le chargement du pilote (Ubuntu)

sudo su
apt-get install libapache2-mod-php8.1 apache2
a2dismod mpm_event
a2enmod mpm_prefork
a2enmod php8.1
exit

Étape 5. Redémarrer Apache et tester l’exemple de script (Ubuntu)

sudo service apache2 restart

Pour tester votre installation, consultez Test de votre installation à la fin de ce document.

Installation sur Ubuntu avec PHP-FPM

Remarque

Pour installer PHP 8.2 ou 8.3, remplacez 8.1 par 8.2 ou 8.3 dans les commandes suivantes.

Étape 1. Installer PHP (Ubuntu avec PHP-FPM)

sudo su
add-apt-repository ppa:ondrej/php -y
apt-get update
apt-get install php8.1 php8.1-dev php8.1-fpm php8.1-xml -y --allow-unauthenticated

Vérifiez l’état du service PHP-FPM en exécutant :

systemctl status php8.1-fpm

Étape 2. Installer les prérequis (Ubuntu avec PHP-FPM)

Installez le pilote ODBC pour Ubuntu en suivant les instructions fournies dans Installer Microsoft ODBC Driver for SQL Server (Linux). Assurez-vous d’installer également le package unixodbc-dev. Il est utilisé par la commande pecl pour installer les pilotes PHP.

Étape 3. Installer les pilotes PHP pour Microsoft SQL Server (Ubuntu avec PHP-FPM)

sudo pecl config-set php_ini /etc/php/8.1/fpm/php.ini
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.1/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini
exit
sudo phpenmod -v 8.1 sqlsrv pdo_sqlsrv

S’il n’y a qu’une version de PHP dans le système, la dernière étape peut être simplifiée en phpenmod sqlsrv pdo_sqlsrv.

Vérifiez que sqlsrv.ini et pdo_sqlsrv.ini se trouvent dans /etc/php/8.1/fpm/conf.d/ :

ls /etc/php/8.1/fpm/conf.d/*sqlsrv.ini

Redémarrez le service PHP-FPM :

sudo systemctl restart php8.1-fpm

Étape 4. Installer et configurer nginx (Ubuntu avec PHP-FPM)

sudo apt-get update
sudo apt-get install nginx
sudo systemctl status nginx

Pour configurer nginx, vous devez modifier le fichier /etc/nginx/sites-available/default. Ajoutez index.php à la liste située sous la section qui indique # Add index.php to the list if you are using PHP :

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;

Ensuite, décommentez et modifiez la section suivant # pass PHP scripts to FastCGI server, comme ceci :

# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}

Étape 5. Redémarrer nginx et tester l’exemple de script (Ubuntu avec PHP-FPM)

sudo systemctl restart nginx.service

Pour tester votre installation, consultez Test de votre installation à la fin de ce document.

Installation sur Red Hat

Étape 1. Installer PHP (Red Hat)

Pour installer PHP sur Red Hat 7, exécutez les commandes suivantes :

Remarque

Pour installer PHP 8.2 ou 8.3, remplacez remi-php81 par remi-php82 ou remi-php83 respectivement dans les commandes suivantes.

sudo su
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
subscription-manager repos --enable=rhel-7-server-optional-rpms
yum install yum-utils
yum-config-manager --enable remi-php81
yum update
# Note: The php-pdo package is required only for the PDO_SQLSRV driver
yum install php php-pdo php-pear php-devel

Pour installer PHP sur Red Hat 8, exécutez les commandes suivantes :

Remarque

Pour installer PHP 8.2 ou 8.3, remplacez remi-8.1 par remi-8.2 ou par remi-8.3 respectivement dans les commandes suivantes.

sudo su
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
dnf install yum-utils
dnf module reset php
dnf module install php:remi-8.1
subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms
dnf update
# Note: The php-pdo package is required only for the PDO_SQLSRV driver
dnf install php-pdo php-pear php-devel

Étape 2. Installer les prérequis (Red Hat)

Installez le pilote ODBC pour Red Hat 7 ou 8 en suivant les instructions fournies dans Installer Microsoft ODBC Driver for SQL Server (Linux). Assurez-vous d’installer également le package unixodbc-dev. Il est utilisé par la commande pecl pour installer les pilotes PHP.

Étape 3. Installer les pilotes PHP pour Microsoft SQL Server (Red Hat)

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
echo extension=pdo_sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/30-pdo_sqlsrv.ini
echo extension=sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/20-sqlsrv.ini
exit

Vous pouvez également effectuer l’installation à partir du référentiel Remi :

sudo yum install php-sqlsrv

Étape 4. Installer Apache (Red Hat)

sudo yum install httpd

SELinux est installé par défaut et s’exécute en mode forcé. Pour autoriser Apache à se connecter aux bases de données par le biais de SELinux, exécutez la commande suivante :

sudo setsebool -P httpd_can_network_connect_db 1

Étape 5. Redémarrer Apache et tester l’exemple de script (Red Hat)

sudo apachectl restart

Pour tester votre installation, consultez Test de votre installation à la fin de ce document.

Installation sur Debian

Remarque

Pour installer PHP 8.2 ou 8.3, remplacez 8.1 par 8.2 ou 8.3 dans les commandes suivantes.

Étape 1. Installer PHP (Debian)

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.1 php8.1-dev php8.1-xml php8.1-intl

Étape 2. Installer les prérequis (Debian)

Installez le pilote ODBC pour Debian en suivant les instructions fournies dans Installer Microsoft ODBC Driver for SQL Server (Linux). Assurez-vous d’installer également le package unixodbc-dev. Il est utilisé par la commande pecl pour installer les pilotes PHP.

Vous devrez peut-être aussi générer les paramètres régionaux corrects pour que la sortie PHP s’affiche correctement dans un navigateur. Par exemple, pour les paramètres régionaux UTF-8 en_US, exécutez les commandes suivantes :

sudo su
sed -i 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/g' /etc/locale.gen
locale-gen

Vous devrez peut-être ajouter /usr/sbin à votre $PATH, car le fichier exécutable locale-gen se trouve ici.

Étape 3. Installer les pilotes PHP pour Microsoft SQL Server (Debian)

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.1/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.1/mods-available/pdo_sqlsrv.ini
exit
sudo phpenmod -v 8.1 sqlsrv pdo_sqlsrv

S’il n’y a qu’une version de PHP dans le système, la dernière étape peut être simplifiée en phpenmod sqlsrv pdo_sqlsrv. Comme avec locale-genphpenmod se trouve dans /usr/sbin, vous devrez peut-être ajouter ce répertoire à votre $PATH.

Étape 4. Installer Apache et configurer le chargement du pilote (Debian)

sudo su
apt-get install libapache2-mod-php8.1 apache2
a2dismod mpm_event
a2enmod mpm_prefork
a2enmod php8.1

Étape 5. Redémarrer Apache et tester l’exemple de script (Debian)

sudo service apache2 restart

Pour tester votre installation, consultez Test de votre installation à la fin de ce document.

Installation sur SUSE

Remarque

Dans les instructions suivantes, remplacez <SuseVersion> par votre version de SUSE. Si vous utilisez SUSE Linux Enterprise Server 15, il s’agira de SLE_15_SP3 ou de SLE_15_SP4 (ou une version ultérieure). Pour SUSE 12, utilisez SLE_12_SP5 (ou une version ultérieure). Toutes les versions de PHP ne sont pas disponibles pour toutes les versions de SUSE Linux. Consultez http://download.opensuse.org/repositories/devel:/languages:/php pour voir pour quelles versions de SUSE la version par défaut de PHP est disponible, ou http://download.opensuse.org/repositories/devel:/languages:/php:/ pour voir quelles autres versions de PHP sont disponibles pour les différentes versions de SUSE.

Notes

Les packages pour PHP 7.4 ou une version ultérieure ne sont pas disponibles pour SUSE 12 à l’heure actuelle.

Étape 1. Installer PHP (SUSE)

sudo su
zypper -n ar -f https://download.opensuse.org/repositories/devel:languages:php/<SuseVersion>/devel:languages:php.repo
zypper --gpg-auto-import-keys refresh
zypper -n install php8 php8-pdo php8-devel php8-openssl

Étape 2. Installer les prérequis (SUSE)

Installez le pilote ODBC pour SUSE en suivant les instructions fournies dans Installer Microsoft ODBC Driver for SQL Server (Linux). Assurez-vous d’installer également le package unixodbc-dev. Il est utilisé par la commande pecl pour installer les pilotes PHP.

Étape 3. Installer les pilotes PHP pour Microsoft SQL Server (SUSE)

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
echo extension=pdo_sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/pdo_sqlsrv.ini
echo extension=sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/sqlsrv.ini
exit

Étape 4. Installer Apache et configurer le chargement du pilote (SUSE)

sudo su
zypper install apache2 apache2-mod_php8
a2enmod php8
echo "extension=sqlsrv.so" >> /etc/php8/apache2/php.ini
echo "extension=pdo_sqlsrv.so" >> /etc/php8/apache2/php.ini
exit

Étape 5. Redémarrer Apache et tester l’exemple de script (SUSE)

sudo systemctl restart apache2

Pour tester votre installation, consultez Test de votre installation à la fin de ce document.

Installation sur Alpine

Notes

PHP 8.1 ou ultérieur peut être disponible dans des référentiels de test ou secondaires pour Alpine. À la place, vous pouvez compiler PHP à partir de la source.

Étape 1. Installer PHP (Alpine)

Les packages PHP pour Alpine se trouvent dans le référentiel edge/community. Consultez Activer le référentiel de la communauté sur sa page Wiki. Ajoutez la ligne suivante à /etc/apk/repositories en remplaçant <mirror> par l’URL d’un miroir de référentiel Alpine :

http://<mirror>/alpine/edge/community

Ensuite, exécutez :

sudo su
apk update
# Note: The php*-pdo package is required only for the PDO_SQLSRV driver
# For PHP 7.*
apk add php7 php7-dev php7-pear php7-pdo php7-openssl autoconf make g++
# For PHP 8.*
apk add php8 php8-dev php8-pear php8-pdo php8-openssl autoconf make g++
# The following symbolic links are optional but useful
ln -s /usr/bin/php8 /usr/bin/php
ln -s /usr/bin/phpize8 /usr/bin/phpize
ln -s /usr/bin/pecl8 /usr/bin/pecl
ln -s /usr/bin/php-config8 /usr/bin/php-config

Étape 2. Installer les prérequis (Alpine)

Installez le pilote ODBC pour Alpine en suivant les instructions fournies dans Installer Microsoft ODBC Driver for SQL Server (Linux). Assurez-vous d’installer également le package unixodbc-dev (sudo apk add unixodbc-dev). Il est utilisé par la commande pecl pour installer les pilotes PHP.

Étape 3. Installer les pilotes PHP pour Microsoft SQL Server (Alpine)

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
sudo su
echo extension=pdo_sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/10_pdo_sqlsrv.ini
echo extension=sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/20_sqlsrv.ini

Étape 4. Installer Apache et configurer le chargement du pilote (Alpine)

# For PHP 7.*
sudo apk add php7-apache2 apache2
# For PHP 8.*
sudo apk add php8-apache2 apache2

Étape 5. Redémarrer Apache et tester l’exemple de script (Alpine)

sudo rc-service apache2 restart

Pour tester votre installation, consultez Test de votre installation à la fin de ce document.

Installation sur macOS

Si ce n’est déjà fait, installez brew comme suit :

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Remarque

Pour installer PHP 8.2 ou 8.3, remplacez php@8.1 par php@8.2 ou par php@8.3 respectivement dans les commandes suivantes.

Étape 1. Installer PHP (macOS)

brew tap
brew tap homebrew/core
brew install php@8.1

PHP doit maintenant être présent dans votre chemin. Exécutez php -v pour vérifier que vous exécutez la bonne version de PHP. Si PHP ne se trouve pas dans votre chemin ou s’il ne s’agit pas de la version correcte, exécutez les commandes suivantes :

brew link --force --overwrite php@8.1

Si vous utilisez Apple M1 ARM64, vous devrez peut-être définir le chemin :

export PATH="/opt/homebrew/bin:$PATH"

Étape 2. Installer les prérequis (macOS)

Installez le pilote ODBC pour macOS en suivant les instructions fournies dans Installer Microsoft ODBC Driver for SQL Server (macOS).

Notes

Si vous utilisez du matériel Apple M1 ARM64, installez Microsoft ODBC Driver 17.8+ directement sans utiliser l’émulateur Rosetta 2.

Vous devrez peut-être aussi installer les outils de création GNU :

brew install autoconf automake libtool

Étape 3. Installer les pilotes PHP pour Microsoft SQL Server (macOS)

sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv

Si vous utilisez Apple M1 ARM64, procédez plutôt comme suit :

sudo CXXFLAGS="-I/opt/homebrew/opt/unixodbc/include/" LDFLAGS="-L/opt/homebrew/lib/" pecl install sqlsrv
sudo CXXFLAGS="-I/opt/homebrew/opt/unixodbc/include/" LDFLAGS="-L/opt/homebrew/lib/" pecl install pdo_sqlsrv

Étape 4. Installer Apache et configurer le chargement du pilote (macOS)

Notes

La dernière version de macOS 11.0 Big Sur est fournie avec Apache 2.4 préinstallé, mais Apple a également supprimé certains scripts requis. La solution consiste à installer Apache 2.4 via Homebrew puis à le configurer, mais cela n’entre pas dans le cadre de ce guide d’installation. Par conséquent, renseignez-vous auprès d’Apache ou Homebrew pour obtenir des instructions détaillées.

brew install apache2

Pour rechercher le fichier de configuration Apache, httpd.conf, pour votre installation Apache, exécutez :

/usr/local/bin/apachectl -V | grep SERVER_CONFIG_FILE

Les commandes suivantes ajoutent la configuration requise à httpd.conf. Veillez à substituer le chemin retourné par la commande précédente à /usr/local/etc/httpd/httpd.conf :

echo "LoadModule php7_module /usr/local/opt/php@8.1/lib/httpd/modules/libphp7.so" >> /usr/local/etc/httpd/httpd.conf
(echo "<FilesMatch .php$>"; echo "SetHandler application/x-httpd-php"; echo "</FilesMatch>";) >> /usr/local/etc/httpd/httpd.conf

Étape 5. Redémarrer Apache et tester l’exemple de script (macOS)

sudo apachectl restart

Pour tester votre installation, consultez Test de votre installation à la fin de ce document.

Test de votre installation

Pour tester cet exemple de script, créez un fichier nommé testsql.php à la racine de document de votre système. Les chemins sont les suivants : /var/www/html/ sur Ubuntu, Debian et Red Hat, /srv/www/htdocs sur SUSE, /var/www/localhost/htdocs sur Alpine et /usr/local/var/www sur macOS. Copiez-y le script suivant, en remplaçant le serveur de base de données, le nom d’utilisateur et le mot de passe comme il convient.

Exemple SQLSRV

<?php
$serverName = "yourServername";
$connectionOptions = array(
    "database" => "yourDatabase",
    "uid" => "yourUsername",
    "pwd" => "yourPassword"
);

function exception_handler($exception) {
    echo "<h1>Failure</h1>";
    echo "Uncaught exception: " , $exception->getMessage();
    echo "<h1>PHP Info for troubleshooting</h1>";
    phpinfo();
}

set_exception_handler('exception_handler');

// Establishes the connection
$conn = sqlsrv_connect($serverName, $connectionOptions);
if ($conn === false) {
    die(formatErrors(sqlsrv_errors()));
}

// Select Query
$tsql = "SELECT @@Version AS SQL_VERSION";

// Executes the query
$stmt = sqlsrv_query($conn, $tsql);

// Error handling
if ($stmt === false) {
    die(formatErrors(sqlsrv_errors()));
}
?>

<h1> Success Results : </h1>

<?php
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
    echo $row['SQL_VERSION'] . PHP_EOL;
}

sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);

function formatErrors($errors)
{
    // Display errors
    echo "<h1>SQL Error:</h1>";
    echo "Error information: <br/>";
    foreach ($errors as $error) {
        echo "SQLSTATE: ". $error['SQLSTATE'] . "<br/>";
        echo "Code: ". $error['code'] . "<br/>";
        echo "Message: ". $error['message'] . "<br/>";
    }
}
?>

Exemple PDO_SQLSRV

<?php
try {
    $serverName = "yourServername";
    $databaseName = "yourDatabase";
    $uid = "yourUsername";
    $pwd = "yourPassword";
    
    $conn = new PDO("sqlsrv:server = $serverName; Database = $databaseName;", $uid, $pwd);

    // Select Query
    $tsql = "SELECT @@Version AS SQL_VERSION";

    // Executes the query
    $stmt = $conn->query($tsql);
} catch (PDOException $exception1) {
    echo "<h1>Caught PDO exception:</h1>";
    echo $exception1->getMessage() . PHP_EOL;
    echo "<h1>PHP Info for troubleshooting</h1>";
    phpinfo();
}

?>

<h1> Success Results : </h1>

<?php
try {
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo $row['SQL_VERSION'] . PHP_EOL;
    }
} catch (PDOException $exception2) {
    // Display errors
    echo "<h1>Caught PDO exception:</h1>";
    echo $exception2->getMessage() . PHP_EOL;
}

unset($stmt);
unset($conn);
?>

Dirigez votre navigateur vers https://localhost/testsql.php (https://localhost:8080/testsql.php sur macOS). Vous devriez maintenant pouvoir vous connecter à votre base de données SQL Server/SQL Azure. Si le message de réussite indiquant la version de SQL n’apparaît pas, vous pouvez effectuer un dépannage de base en exécutant le script en ligne de commande :

php testsql.php

Si l’exécution en ligne de commande réussit, mais que rien ne s’affiche dans votre navigateur, consultez les fichiers journaux Apache. Pour obtenir de l’aide, consultez Ressources de support.

Voir aussi

Bien démarrer avec les pilotes Microsoft pour PHP pour SQL Server

Chargement de Microsoft Drivers for PHP for SQL Server

Configuration système requise pour Microsoft Drivers for PHP for SQL Server