Partager via


Tutoriel d’installation de Linux et macOS pour les pilotes Microsoft pour PHP pour SQL Server

Les instructions suivantes supposent un environnement propre et montrent comment installer PHP 8.1, le pilote Microsoft ODBC, le serveur web Apache et les pilotes Microsoft pour PHP pour SQL Server sur Ubuntu, Red Hat, Debian, SUSE, Alpine et macOS. Ces instructions vous 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 Microsoft Drivers pour PHP pour SQL Server GitHub et les installer en suivant les instructions de chargement des pilotes Microsoft pour PHP pour SQL Server. Pour obtenir une explication du chargement de l’extension et 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 à l’aide de pecl install, si les paquets PHP 8.1 sont disponibles. Vous devrez peut-être exécuter pecl channel-update pecl.php.net en premier. Certaines distributions Linux prises en charge sont par défaut vers PHP 7.1 ou versions antérieures, ce 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 installer php FastCGI Process Manager, 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 SQLSRV et PDO_SQLSRV pilotes, les pilotes peuvent être installés et fonctionner indépendamment. Les utilisateurs à l’aise avec la personnalisation de leur configuration peuvent ajuster ces instructions pour qu’elles soient spécifiques à SQLSRV ou PDO_SQLSRV. Les deux pilotes ont les mêmes dépendances, sauf indication ci-dessous.

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

Note

Vérifiez que vous avez 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 Microsoft ODBC pour SQL Server (Linux) ou installer le pilote Microsoft ODBC pour SQL Server (macOS).

Installation sur Ubuntu

Note

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. Prérequis d’installation (Ubuntu)

Installez le pilote ODBC pour Ubuntu en suivant les instructions de l’installation du pilote Microsoft ODBC pour SQL Server (Linux). Veillez également à installer le unixodbc-dev package. Elle est utilisée par la pecl commande 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’existe qu’une seule version PHP dans le système, la dernière étape peut être simplifiée.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émarrez Apache et testez 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

Note

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. Prérequis d’installation (Ubuntu avec PHP-FPM)

Installez le pilote ODBC pour Ubuntu en suivant les instructions de l’installation du pilote Microsoft ODBC pour SQL Server (Linux). Veillez également à installer le unixodbc-dev package. Elle est utilisée par la pecl commande 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’existe qu’une seule version PHP dans le système, la dernière étape peut être simplifiée.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 /etc/nginx/sites-available/default fichier. Ajoutez index.php à la liste ci-dessous 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, supprimez les marques de commentaire et modifiez la section suivante comme suit # pass PHP scripts to FastCGI server :

# 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émarrez nginx et testez 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 :

Note

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 :

Note

Pour installer PHP 8.2 ou 8.3, remplacez remi-8.1 par remi-8.2 ou 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. Prérequis d’installation (Red Hat)

Installez le pilote ODBC pour Red Hat 7 ou 8 en suivant les instructions de l’installation du pilote Microsoft ODBC pour SQL Server (Linux). Veillez également à installer le unixodbc-dev package. Elle est utilisée par la pecl commande 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 dépôt 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 Imposant. Pour autoriser Apache à se connecter aux bases de données via SELinux, exécutez la commande suivante :

sudo setsebool -P httpd_can_network_connect_db 1

Étape 5. Redémarrez Apache et testez 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

Note

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

É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 de l’installation du pilote Microsoft ODBC pour SQL Server (Linux). Veillez également à installer le unixodbc-dev package. Elle est utilisée par la pecl commande pour installer les pilotes PHP.

Vous devrez peut-être également générer les paramètres régionaux appropriés pour obtenir la sortie PHP à afficher 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, puisque l’exécutable locale-gen se trouve là.

É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’existe qu’une seule version PHP dans le système, la dernière étape peut être simplifiée.phpenmod sqlsrv pdo_sqlsrv Comme avec locale-gen, phpenmod 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émarrez Apache et testez 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

Note

Dans les instructions suivantes, remplacez <SuseVersion> par votre version de SUSE : si vous utilisez SUSE Linux Enterprise Server 15, elle sera SLE_15_SP3 ou SLE_15_SP4 (ou ultérieure). Pour SUSE 12, utilisez SLE_12_SP5 (ou version ultérieure). Toutes les versions de PHP ne sont pas disponibles pour toutes les versions de SUSE Linux. Veuillez consulter les http://download.opensuse.org/repositories/devel:/languages:/php versions de SUSE qui ont la version par défaut de PHP disponible, ou vérifier http://download.opensuse.org/repositories/devel:/languages:/php:/ quelles autres versions de PHP sont disponibles pour quelles versions de SUSE.

Note

Les packages pour PHP 7.4 ou versions ultérieures ne sont pas disponibles pour SUSE 12, à compter d’aujourd’hui.

É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. Prérequis d’installation (SUSE)

Installez le pilote ODBC pour SUSE en suivant les instructions de l’installation du pilote Microsoft ODBC pour SQL Server (Linux). Veillez également à installer le unixodbc-dev package. Elle est utilisée par la pecl commande 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émarrez Apache et testez 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

Note

PHP 8.1 ou version ultérieure peuvent être disponibles à partir de dépôts de test ou edge pour Alpine. Vous pouvez à la place compiler PHP à partir de la source.

Étape 1. Installer PHP (Alpine)

Les packages PHP pour Alpine sont disponibles dans le edge/community référentiel. Vérifiez activer le référentiel de la communauté sur leur page WIKI. Ajoutez la ligne suivante à /etc/apk/repositories, en remplaçant <mirror> par l’URL d’un miroir de référentiels 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 de l’installation du pilote Microsoft ODBC pour SQL Server (Linux). Veillez également à installer le unixodbc-dev package (sudo apk add unixodbc-dev). Elle est utilisée par la pecl commande 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émarrez Apache et testez 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 vous ne l’avez pas déjà, installez brew comme suit :

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

Note

Pour installer PHP 8.2 ou 8.3, remplacez php@8.1 par php@8.2 ou 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 se trouver dans votre variable PATH. Exécutez php -v pour vérifier que vous exécutez la version correcte de PHP. Si PHP n’est pas dans votre chemin d’accès ou qu’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 d’accès :

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

Étape 2. Prérequis d’installation (macOS)

Installez le pilote ODBC pour macOS en suivant les instructions de l’installation du pilote Microsoft ODBC pour SQL Server (macOS).

Note

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

En outre, vous devrez peut-être 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 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)

Note

Le dernier macOS 11.0 Big Sur est fourni 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'est pas couvert par ce guide d'installation. Veuillez donc vous référer à la documentation détaillée d'Apache ou de Homebrew pour des instructions plus précises.

brew install apache2

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

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

Les commandes suivantes ajoutent la configuration requise à httpd.conf. Veillez à remplacer le chemin retourné par la commande précédente à la place de /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émarrez Apache et testez 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 appelé testsql.php dans la racine du document de votre système. Ce chemin se trouve /var/www/html/ sur Ubuntu, Debian et Red Hat, /srv/www/htdocs sur SUSE, /var/www/localhost/htdocs sur Alpine ou /usr/local/var/www sur macOS. Copiez le script suivant, en remplaçant le serveur, la base de données, le nom d’utilisateur et le mot de passe appropriés.

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 devez maintenant être en mesure de vous connecter à votre base de données SQL Server/Azure SQL. Si vous ne voyez pas de message de réussite montrant les informations de version SQL, vous pouvez effectuer une résolution des problèmes de base en exécutant le script à partir de la ligne de commande :

php testsql.php

Si l’exécution à partir de la ligne de commande réussit, mais rien ne s’affiche dans votre navigateur, vérifiez les fichiers journaux Apache. Pour obtenir de l’aide supplémentaire, consultez les ressources de support pour les endroits où aller.

Voir aussi

Introduction aux pilotes Microsoft pour PHP pour SQL Server

Chargement des pilotes Microsoft pour PHP pour SQL Server

Configuration système requise pour les pilotes Microsoft pour PHP pour SQL Server