Um mittels PHP auf einen Microsoft SQL Server zuzugreifen ist einiges an Vorarbeit nötig. Zunächst muss der ODBC-Treiber aus den Microsoft Repositories installiert werden. Im Folgenden wird die Installation unter Ubuntu 20.04 beschrieben. Je nach verwendeter Distribution oder Version kann diese abweichen und wird im Detail in der Microsoft Dokumentation beschrieben.
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo apt-add-repository https://packages.microsoft.com/ubuntu/20.04/prod
sudo apt-get update
sudo apt-get install -y msodbcsql17
Die Lizenz muss durch die Auswahl von <Ja> akzeptiert werden. Alternativ kann während der Paketinstallation die Variable ACCEPT_EULA=Y in folgender Form mit angegeben werden:
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17
Zur Übersetzung des PHP Moduls mittels pecl werden noch einige weitere Abhängigkeiten benötigt:
sudo apt-get install -y unixodbc-dev php-pear php-dev
Die Installation erfolgt daraufhin mithilfe des folgenden Befehls:
/usr/bin/pear config-set temp_dir /var/tmp/ && /usr/bin/pecl install sqlsrv pdo_sqlsrv
Dieser übersetzt das pdo_sqlsrv PHP Modul für die installierte PHP Version. Im Gegensatz zur offiziellen Anleitung von Microsoft wird dazu keine neuere PHP Version vorausgesetzt.
Nach der eigentlichen Installation muss das Modul für php-fpm aktiviert werden und der Dienst neu gestartet werden.
Dazu werden die folgenden zwei Konfigurationsdateien /etc/php/7.4/fpm/conf.d/20-sqlsrv.ini und /etc/php/7.4/fcli/conf.d/20-sqlsrv.ini mit gleichem Inhalt erstellt:
extension=sqlsrv.so
extension=pdo_sqlsrv.so
Abschliessend wird der php-fpm Dienst neu gestartet:
systemctl restart php7.4-fpm.service
Mittels phpinfo lässt sich prüfen, ob das Modul erfolgreich aktiviert wurde:
<?php
phpinfo();
?>
Ich benutze immer den FreeTDS Treiber, siehe https://www.php.net/manual/de/ref.pdo-dblib.php. Spricht was dagegen?