Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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:
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.
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
fileBefehl meldet die Architektur des ausführbaren Programms. Wenn eine universelle macOS-ausführbare Datei gemeldet wird, wähle explizit die beabsichtigte Architektur aus, wiearch -arm64 php --versionoderarch -x86_64 php --version. Verwenden Sie dieselbe Architekturauswahl beim Bau, Laden und Testen der Erweiterungen.Wählen Sie eine PHP-Treiber-Version, die die PHP-Minor-Version, das Betriebssystem und das Datenbankziel unterstützt.
Wählen Sie eine unterstützte Microsoft ODBC-Treiberversion aus der Kompatibilitätstabelle in diesem Artikel aus.
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.
Konfigurieren und überprüfen Sie die CLI- und Webserverlaufzeiten getrennt. Ein erfolgreicher
php -mBefehl 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.
Aktiviere die Treiberdatei, die zu deiner PHP-Version passt. Für Dateinamen siehe Treiberversionen. Laden Sie die Dateien von Herunterladen der Microsoft-Treiber für PHP für SQL Server herunter. Konfigurationsanweisungen finden Sie unter Laden der Microsoft-Treiber für PHP für SQL Server.
Wähle einen Webserver und eine PHP-Integrationsmethode, die von PHP und deinem Anwendungsframework unterstützt werden. Folgen Sie der PHP-Installationsdokumentation und den Bereitstellungsanweisungen Ihres Frameworks, um den Webserver so zu konfigurieren, dass er PHP ausführen kann. Überprüfen Sie das Laden der Erweiterung im Webserver-Runtime getrennt von der CLI.
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 |