Systemanforderungen für Microsoft-Treiber für PHP für SQL Server

PHP-Treiber herunterladen

Dieser Artikel listet die Komponenten auf, die Sie auf Ihrem System installieren müssen, um Daten in SQL Server oder Azure SQL-Datenbank entweder mit dem SQLSRV- oder PDO_SQLSRV-Treiber abzurufen.

Weitere Informationen zu Support-Lebenszyklen und Anforderungen der PHP-Treiber finden Sie in der Support-Matrix. Die SQLSRV- und PDO_SQLSRV-Treiber in jeder Version haben dieselben PHP-, Betriebssystem-, Architektur-, Thread-Sicherheits- und ODBC-Anforderungen.

Wie der Treiber-Stack zusammenpasst

Eine PHP-Anwendung verbindet sich nicht direkt mit dem Datenbankserver. Jede Schicht muss mit der benachbarten Schicht kompatibel sein:

Ebene Was du auswählst oder konfigurierst Wie sieht eine Nichtübereinstimmung aus?
Application SQLSRV-Funktionen oder PDO_SQLSRV Klassen und Attribute Undefinierte Funktionen, nicht verfügbarer PDO-Treiber oder Anwendungsfehler
PHP-Erweiterung SQLSRV und PDO_SQLSRV Dateien, die für die PHP-Minor-Version, die Architektur und den Thread-Sicherheitsmodus erstellt wurden PHP-Startwarnung, Modulladefehler oder Prozessabsturz
PHP-Laufzeit Kommandozeilenschnittstelle (CLI), Apache-Modul, PHP-FPM oder IIS FastCGI-Konfiguration Die CLI lädt die Treiber, aber die Webanwendung nicht
Microsoft ODBC-Treiber Eine Version, die von der ausgewählten PHP-Treiberversion unterstützt wird Verbindungsausfälle oder fehlende ODBC-Bibliothek
Betriebssystem Eine unterstützte Version und Architektur mit den erforderlichen Laufzeit- und Build-Paketen Kein kompatibles Paket, keine nicht aufgelöste gemeinsam genutzte Bibliothek oder Fehler beim Quellbuild
Datenbankprodukt Ein unterstütztes SQL Server- oder Azure SQL-Ziel Serverversion- oder funktionsspezifische Fehler nach der Aufnahme einer Verbindung

SQLSRV und PDO_SQLSRV bieten unterschiedliche PHP-APIs über denselben ODBC-Treiber an. Installiere beides, wenn deine Anwendung beide APIs nutzt. Das Installieren einer Erweiterung installiert oder aktiviert die andere nicht automatisch.

API Programmiermodell Installationsspezifische Überprüfung
SQLSRV Prozedurale Funktionen sqlsrv_* und SQLSRV-Konstanten extension_loaded('sqlsrv') und function_exists('sqlsrv_connect')
PDO_SQLSRV PHP Data Objects (PDO)-Klassen, Attribute und Ausnahmen extension_loaded('pdo_sqlsrv') und sqlsrv in PDO::getAvailableDrivers()

Die Erweiterungen können unabhängig installiert werden. PDO_SQLSRV erfordert außerdem, dass PDO vor PDO_SQLSRV geladen wird.

Wählen Sie ein kompatibles Set

Bevor Sie einen Treiber herunterladen oder bauen, führen Sie diese Prüfungen durch:

  1. Identifizieren Sie jede PHP-Laufzeit, die die Anwendung bedient. Eine geplante Aufgabe, ein Kommandozeilen-Worker, eine IIS-Seite, ein Apache-Modul und PHP-FPM Pool können verschiedene PHP-ausführbare Dateien und Konfigurationsdateien verwenden.

  2. Führe den folgenden Befehl mit jedem PHP-Executable aus:

    php -i | findstr /I "PHP Version Architecture Thread Safety extension_dir"
    

    Unter Linux oder macOS verwenden Sie:

    php -i | grep -E "PHP Version|Thread Safety|extension_dir"
    file "$(php -r 'echo PHP_BINARY;')"
    

    Der file Befehl meldet die Architektur des ausführbaren Programms. Wenn eine universelle macOS-ausführbare Datei gemeldet wird, wähle explizit die beabsichtigte Architektur aus, wie arch -arm64 php --version oder arch -x86_64 php --version. Verwenden Sie dieselbe Architekturauswahl beim Bau, Laden und Testen der Erweiterungen.

  3. Wählen Sie eine PHP-Treiber-Version, die die PHP-Minor-Version, das Betriebssystem und das Datenbankziel unterstützt.

  4. Wählen Sie eine unterstützte Microsoft ODBC-Treiberversion aus der Kompatibilitätstabelle in diesem Artikel aus.

  5. Passen Sie die Erweiterungsdatei oder den PIE-Build an die PHP-Architektur und den Thread-Sicherheitsmodus an. Kopiere keine Erweiterung aus einer anderen PHP-Installation, es sei denn, alle diese Werte stimmen überein.

  6. Konfigurieren und überprüfen Sie die CLI- und Webserverlaufzeiten getrennt. Ein erfolgreicher php -m Befehl beweist lediglich, dass die CLI-Laufzeit die Erweiterung geladen hat.

PHP

Laden Sie PHP-Binärdateien von der PHP-Website herunter. Wählen Sie eine PHP-Version, die in PHP-Versionsunterstützung aufgeführt ist.

Thread-Sicherheit und Architektur

Der PHP-Build und die Erweiterungsdatei müssen bei beiden Werten übereinstimmen.

PHP-Wert Erforderliche Treiberauswahl
Thread Safety => enabled Thread-sichere (ts oder TS) Treiberdatei
Thread Safety => disabled Nicht-threadsichere (nts oder NTS) Treiberdatei
Architecture => x64 64-Bit-Treiberdatei und 64-Bit-ODBC-Komponenten
Architecture => x86 32-Bit-Windows-Treiberdatei und 32-Bit-ODBC-Komponenten

Die CLI kann entweder einen threadsicheren oder einen nicht-threadsicheren PHP-Build verwenden. Wählen Sie die Erweiterung nach dem gemeldeten Wert aus, nicht mit der Annahme, dass jeder CLI-Build nicht threadsicher ist.

ODBC-Treiber

Installiere einen unterstützten Microsoft ODBC-Treiber für SQL Server auf dem Computer, der PHP ausführt. Laden Sie den Treiber von Download ODBC Driver for SQL Server herunter.

Wenn Sie die Windows-Version des Treibers auf eine 64-Bit-Version von Windows herunterladen, installiert das ODBC-64-Bit-Installationsprogramm sowohl 32-Bit- als auch 64-Bit-ODBC-Treiber. Wenn Sie eine 32-Bit-Version von Windows verwenden, verwenden Sie das ODBC-x86-Installationsprogramm. Auf Nicht-Windows-Plattformen sind nur 64-Bit-Versionen des Treibers verfügbar.

Die Tabelle enthält historische Kombinationen für die Modernisierungsplanung. Nutze die aktuelle PHP-Treiberversion und die angegebenen ODBC-Versionen für eine neue Installation. Die Kompatibilität mit einer älteren Version verlängert den Support-Lebenszyklus nicht. Überprüfen Sie sowohl den PHP-Treiber-Support-Lebenszyklus als auch die unterstützten PHP-Versionen.

Eine leere Zelle bedeutet nicht zwangsläufig, dass der PHP-Treiber diese ODBC-Version ablehnt. Einzelne Funktionen können neuere ODBC-Versionen als die Basiskombination erfordern.

Version des PHP-Treibers →
↓ Version des ODBC-Treibers
5.13 5.12 5.11 5.10 5.9 5.8 5.6 5.3 5,2 4.3 4,0 3.2
ODBC-Treiber 18 Ja Ja Ja Ja
ODBC-Treiber 17 Ja Ja Ja Ja Ja Ja Ja Ja Ja
ODBC-Treiber 13.1 Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja
ODBC-Treiber 13 Ja
ODBC-Treiber 11 Ja Ja Ja Ja Ja Ja Ja

Falls Sie den SQLSRV-Treiber verwenden, teilt sqlsrv_client_info Ihnen mit, welche Version des Microsoft ODBC Driver for SQL Server von Microsoft-Treibern für PHP für SQL Server verwendet wird. Falls Sie den PDO_SQLSRV-Treiber verwenden, können Sie die Version mithilfe von PDO::getAttribute abrufen.

SQL Server

Für unterstützte SQL Server-Versionen siehe Unterstützte Datenbankversionen.

Bewerten Sie die Zielunterstützung separat für SQL Server, Azure SQL-Datenbank, Azure SQL Managed Instance, Azure Synapse Analytics, SQL Database in Microsoft Fabric und Warehouse in Microsoft Fabric. Installationsanforderungen sind clientseitige Anforderungen und bedeuten nicht, dass jede Authentifizierungsmethode, Verbindungsoption, Transact-SQL (T-SQL)-Funktion oder jeder Datentyp auf jedem Ziel verfügbar ist. Verwenden Sie die Supportmatrix und die Dokumentation des Zielprodukts für das Szenario, in dem Ihre Anwendung verwendet wird.

Betriebssysteme

Für unterstützte Betriebssysteme siehe Unterstützte Betriebssysteme.

Treiberversionen

Jede Version der Microsoft Drivers for PHP for SQL Server liefert SQLSRV- und PDO_SQLSRV Treiberdateien in threadsicheren und nicht-threadsicheren Varianten. Unter Windows ist jede Variante ebenfalls für 32-Bit- und 64-Bit-PHP ausgelegt. Wähle die Treiberdatei passend zu deiner PHP-Version, deinem Thread-Sicherheitsmodus und deiner Architektur aus. Um eine Treiberdatei nach dem Download zu aktivieren, lesen Sie Laden der Microsoft-Treiber für PHP für SQL Server.

Unter Linux und macOS installieren Sie die Treiber mit PIE, dem PHP-Installer für Erweiterungen, wie in den Linux- und macOS-Installationsanweisungen beschrieben. PIE ersetzt das veraltete PHP Extension Community Library (PECL)- Paketsystem und benennt die installierte Erweiterung sqlsrv.so oder pdo_sqlsrv.so. Die folgenden Tabellen listen die Dateinamen der vorgefertigten Binärpakete auf, die Sie manuell von der Seite Microsoft Drivers for PHP for SQL Server Releases herunterladen.

Die folgenden Tabellen listen die Dateien in den 5.13-Release-Paketen auf. In Dateinamen bedeuten ts und TS thread-sicher, und nts und NTS bedeuten nicht-thread-sicher.

Windows-Treiberdateien

Das Paket Windows_5.13.xRTW.zip enthält diese Dateien.

SQLSRV-Datei PDO_SQLSRV-Datei PHP-Version Threadsicher? Architecture
php_sqlsrv_83_nts_x86.dll php_pdo_sqlsrv_83_nts_x86.dll 8.3 nein 32-bit
php_sqlsrv_83_ts_x86.dll php_pdo_sqlsrv_83_ts_x86.dll 8.3 ja 32-bit
php_sqlsrv_83_nts_x64.dll php_pdo_sqlsrv_83_nts_x64.dll 8.3 nein 64-bit
php_sqlsrv_83_ts_x64.dll php_pdo_sqlsrv_83_ts_x64.dll 8.3 ja 64-bit
php_sqlsrv_84_nts_x86.dll php_pdo_sqlsrv_84_nts_x86.dll 8,4 nein 32-bit
php_sqlsrv_84_ts_x86.dll php_pdo_sqlsrv_84_ts_x86.dll 8,4 ja 32-bit
php_sqlsrv_84_nts_x64.dll php_pdo_sqlsrv_84_nts_x64.dll 8,4 nein 64-bit
php_sqlsrv_84_ts_x64.dll php_pdo_sqlsrv_84_ts_x64.dll 8,4 ja 64-bit
php_sqlsrv_85_nts_x86.dll php_pdo_sqlsrv_85_nts_x86.dll 8,5 nein 32-bit
php_sqlsrv_85_ts_x86.dll php_pdo_sqlsrv_85_ts_x86.dll 8,5 ja 32-bit
php_sqlsrv_85_nts_x64.dll php_pdo_sqlsrv_85_nts_x64.dll 8,5 nein 64-bit
php_sqlsrv_85_ts_x64.dll php_pdo_sqlsrv_85_ts_x64.dll 8,5 ja 64-bit

Verwende eine nicht-threadsichere Treiberdatei mit einem nicht threadsicheren PHP-Build und eine threadsichere Treiberdatei mit einem threadsicheren PHP-Build. Die Befehlszeilenschnittstelle (Command-Line Interface, CLI) kann einen der beiden Builds verwenden. Um zu bestätigen, welchen Build du hast, führe php -i aus und prüfe den Thread Safety-Wert.

Linux- und macOS-Treiberdateien

Die Pakete Linux_5.13.xRTW.tar.gz und Mac_5.13.xRTW.tar.gz enthalten diese Dateien. Das Linux-Archiv enthält x64-Binärdateien, und das macOS-Archiv enthält Arm64-Binärdateien.

Vorgefertigte Dateien müssen ebenfalls mit den nativen Bibliotheken Ihres Betriebssystems übereinstimmen. Die Linux 5.13.3-Binärdateien benötigen glibc 2.38 und spätere Versionen sowie eine C++-Laufzeit, die GLIBCXX_3.4.32 bereitstellt. Die macOS 5.13.3-Binärdateien deklarieren macOS 26 als ihr minimales Bereitstellungsziel. Diese binären Anforderungen sind getrennt von der Betriebssystemunterstützung für Quellcode-Builds.

Verwende PIE, wenn die Architektur des Archivs oder die Anforderungen der nativen Bibliothek nicht mit deiner PHP-Installation übereinstimmen. PIE erstellt Builds für die installierten PHP- und nativen Bibliotheken. Ersetze Systembibliotheken nicht manuell, um eine vorgefertigte Erweiterung zu laden.

SQLSRV-Datei PDO_SQLSRV-Datei PHP-Version Threadsicher?
SQLSRV_8.3_NTS.so PDO_SQLSRV_8.3_NTS.so 8.3 nein
SQLSRV_8.3_TS.so PDO_SQLSRV_8.3_TS.so 8.3 ja
SQLSRV_8.4_NTS.so PDO_SQLSRV_8.4_NTS.so 8,4 nein
SQLSRV_8.4_TS.so PDO_SQLSRV_8.4_TS.so 8,4 ja
SQLSRV_8.5_NTS.so PDO_SQLSRV_8.5_NTS.so 8,5 nein
SQLSRV_8.5_TS.so PDO_SQLSRV_8.5_TS.so 8,5 ja

Kopiere jede benötigte Datei in dein PHP-Erweiterungsverzeichnis. Du kannst den Dateinamen des Pakets behalten und extension=SQLSRV_8.4_NTS.so schreiben oder die Datei in sqlsrv.so umbenennen und die Kurzform extension=sqlsrv schreiben. Wende dieselbe Namenswahl auf PDO_SQLSRV an. Um das Erweiterungsverzeichnis zu finden, führe php -i | grep extension_dir aus. Befolgen Sie Laden der Treiber unter Linux und macOS, um die Erweiterungen in der richtigen Konfigurationsdatei zu aktivieren und PHP Data Objects (PDO) vor PDO_SQLSRV zu laden.

Frühere Versionen

Für die Treiberdateien, die in Versionen vor 5.13 enthalten sind, laden Sie das Paket dieser Version von der Seite Microsoft-Treiber für PHP für SQL Server herunter und listen Sie seinen Inhalt auf. Veröffentlichungen vor 5.12 veröffentlichen ein separates Paket für jedes Betriebssystem und jede PHP-Version statt eines einzelnen Pakets pro Plattform.

Verifizieren Sie die ausgewählte Umgebung

Führen Sie diese Prüfungen nach der Installation der PHP-Erweiterungen und des ODBC-Treibers durch, aber bevor Sie einen Webserver konfigurieren:

php --version
php --ini
php --ri sqlsrv
php --ri pdo_sqlsrv

Die letzten beiden Befehle müssen separate Modulinformationsabschnitte anzeigen. Wenn einer der Befehle meldet, dass die Erweiterung nicht vorhanden ist, schließen Sie das Installations- und Ladeverfahren der Plattform ab, bevor Sie eine Datenbankverbindung testen.

Erstellen Sie verify-php-drivers.php, um beide PHP-APIs zu überprüfen, ohne Zugangsdaten zu benötigen:

<?php
$failures = [];

if (!extension_loaded('sqlsrv') || !function_exists('sqlsrv_connect')) {
    $failures[] = 'SQLSRV is not loaded.';
}

if (!extension_loaded('pdo_sqlsrv') || !in_array('sqlsrv', PDO::getAvailableDrivers(), true)) {
    $failures[] = 'PDO_SQLSRV is not loaded.';
}

echo $failures === []
    ? "SQLSRV and PDO_SQLSRV are loaded." . PHP_EOL
    : implode(PHP_EOL, $failures) . PHP_EOL;

exit($failures === [] ? 0 : 1);

Führe es mit dem PHP-Executable aus, das die Anwendung bedient:

php verify-php-drivers.php

Erwartete Ausgabe:

SQLSRV and PDO_SQLSRV are loaded.

Diese Prüfung überprüft das Laden der Erweiterung. Es überprüft weder ODBC-Konnektivität, Authentifizierung, Zertifikatsvertrauen, Netzwerkzugang noch Datenbankberechtigungen.

Lösche verify-php-drivers.php, nachdem du das Ergebnis aufgezeichnet hast.

Diagnoseanforderungsfehler

Symptom Vermuteter Besitzer Prüfen
PHP Startup: Unable to load dynamic library PHP-Laufzeit- oder Erweiterungsauswahl PHP-Nebenversion, Architektur, Thread-Sicherheitsmodus extension_dirund genauer Dateiname
Call to undefined function sqlsrv_connect() SQLSRV-Erweiterungskonfiguration php --ri sqlsrv, die aktive php.ini-Datei und gescannte .ini-Dateien
PDOException: could not find driver PDO_SQLSRV-Erweiterung oder PDO-Ladereihenfolge php --ri pdo_sqlsrv, PDO::getAvailableDrivers(), und ob PDO zuerst geladen wird
Fehlende libodbc- oder msodbcsql-Bibliothek ODBC-Installation oder Betriebssystem-Loader Installierte ODBC-Pakete, Architekturen und Abhängigkeiten von gemeinsam genutzten Bibliotheken
Die CLI ist erfolgreich, aber die Website scheitert SAPI-spezifische PHP-Konfiguration Vergleichen Sie php --ini mit einer temporären phpinfo()-Seite nach Einschränkung des Zugriffs auf die Diagnoseseite.
Erweiterung wird geladen, aber die Verbindung schlägt fehl ODBC, Netzwerk, Authentifizierung, Zertifikat oder Datenbankziel Erfassen Sie die SQLSRV-Fehlersammlung oder die PDO-Ausnahme und analysieren Sie die gemeldete SQLSTATE