Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Dit artikel vermeldt de componenten die je op je systeem moet installeren om data in SQL Server of Azure SQL Database te kunnen benaderen met behulp van de SQLSRV- of PDO_SQLSRV driver.
Voor meer informatie over de levenscycli van ondersteuning en de vereisten van de PHP-drivers, zie de supportmatrix. De SQLSRV- en PDO_SQLSRV-drivers in elke release hebben dezelfde PHP-, besturingssysteem-, architectuur-, thread-safety en ODBC-vereisten.
Hoe de driver stack samenhangt
Een PHP-applicatie maakt geen directe verbinding met de databaseserver. Elke laag moet compatibel zijn met de aangrenzende laag:
| Laag | Wat je selecteert of configureert | Hoe een mismatch eruitziet |
|---|---|---|
| Application | SQLSRV-functies of PDO_SQLSRV klassen en attributen | Ongedefinieerde functies, niet-beschikbare PDO-driver of fouten op applicatieniveau |
| PHP-extensie | SQLSRV en PDO_SQLSRV bestanden gebouwd voor de PHP-minorversie, architectuur en thread-veiligheidsmodus | PHP-opstartwaarschuwing, fout bij het laden van de module of procescrash |
| PHP runtime | Command-line interface (CLI), Apache-module, PHP-FPM of IIS FastCGI-configuratie | De CLI laadt de drivers, maar de webapplicatie niet |
| Microsoft ODBC-stuurprogramma | Een versie die wordt ondersteund door de geselecteerde PHP-driverrelease | Verbindingsstoringen of een ontbrekende ODBC-bibliotheek |
| besturingssysteem | Een ondersteunde release en architectuur met de benodigde runtime- en buildpakketten | Geen compatibel pakket, onopgeloste gedeelde bibliotheek of fout bij het bouwen vanuit broncode |
| Databaseproduct | Een ondersteund SQL Server- of Azure SQL-doel | Serverversie- of feature-specifieke fouten nadat een verbinding is gevestigd |
SQLSRV en PDO_SQLSRV bieden verschillende PHP-API's over dezelfde ODBC-driver. Installeer beide wanneer je applicatie beide API's gebruikt. Het installeren van de ene extensie installeert of activeert de andere niet automatisch.
| API | Programmeermodel | Installatie-specifieke controle |
|---|---|---|
| SQLSRV | Procedurele sqlsrv_* functies en SQLSRV-constanten |
extension_loaded('sqlsrv') en function_exists('sqlsrv_connect') |
| PDO_SQLSRV | PHP Data Objects (PDO) klassen, attributen en uitzonderingen |
extension_loaded('pdo_sqlsrv') en sqlsrv in PDO::getAvailableDrivers() |
De uitbreidingen kunnen onafhankelijk worden geïnstalleerd. PDO_SQLSRV vereist ook dat PDO geladen wordt vóór PDO_SQLSRV.
Kies een compatibele set
Voordat je een driver downloadt of bouwt, voer je deze controles uit:
Identificeer elke PHP-runtime die de applicatie bedient. Een geplande taak, commandoregelworker, IIS-site, Apache-module en PHP-FPM pool kunnen verschillende PHP-uitvoerbare bestanden en configuratiebestanden gebruiken.
Voer het volgende commando uit met elke PHP-executable:
php -i | findstr /I "PHP Version Architecture Thread Safety extension_dir"Op Linux of macOS, gebruik:
php -i | grep -E "PHP Version|Thread Safety|extension_dir" file "$(php -r 'echo PHP_BINARY;')"Het
filecommando rapporteert de architectuur van het uitvoerbare bestand. Als het een universeel macOS-uitvoerbaar bestand rapporteert, selecteer dan expliciet de bedoelde architectuur, zoalsarch -arm64 php --versionofarch -x86_64 php --version. Gebruik dezelfde architectuurkeuze bij het bouwen, laden en testen van de uitbreidingen.Selecteer een PHP-driverrelease die de PHP-minorversie, besturingssysteem en databasedoel ondersteunt.
Selecteer een ondersteunde Microsoft ODBC Driver-versie uit de compatibiliteitstabel in dit artikel.
Pas het extensiebestand of de PIE-build af op de PHP-architectuur en thread-safety-modus. Kopieer geen extensie van een andere PHP-installatie tenzij al deze waarden overeenkomen.
Configureer en controleer de CLI- en webserver-runtimes apart. Een succesvol
php -mcommando bewijst alleen dat de CLI-runtime de extensie heeft geladen.
PHP
Download PHP-binairbestanden van de PHP-website. Kies een PHP-versie die staat vermeld in PHP-versieondersteuning.
Schakel het driverbestand in dat overeenkomt met jouw PHP-versie. Voor bestandsversies, zie Driverversies. Download de bestanden via Download de Microsoft Drivers voor PHP voor SQL Server. Voor configuratie-instructies, zie De Microsoft Drivers voor PHP voor SQL Server laden.
Kies een webserver en PHP-integratiemethode die door PHP en je applicatieframework worden ondersteund. Volg de PHP-installatiedocumentatie en de deploymentinstructies van je framework om de webserver te configureren zodat hij PHP draait. Controleer of extensies in de webserverruntime apart van de CLI worden geladen.
Threadveiligheid en architectuur
Het PHP-build- en extensiebestand moet het eens zijn over beide waarden.
| PHP-waarde | Selectie van stuurprogramma vereist |
|---|---|
Thread Safety => enabled |
Thread-safe (ts of TS) driverbestand |
Thread Safety => disabled |
Niet-thread-veilige (nts of NTS) driverbestand |
Architecture => x64 |
64-bits stuurprogrammabestand en 64-bits ODBC-componenten |
Architecture => x86 |
32-bits Windows-stuurprogrammabestand en 32-bits ODBC-componenten |
De CLI kan zowel een thread-veilige als niet-thread-veilige PHP-build gebruiken. Selecteer de extensie op basis van de gerapporteerde waarde, niet door aan te nemen dat elke CLI-build niet thread-veilig is.
ODBC-stuurprogramma
Installeer een ondersteunde Microsoft ODBC-driver voor SQL Server op de computer die PHP draait. Download de driver van Download ODBC Driver for SQL Server.
Als u de Windows-versie van het stuurprogramma downloadt op een 64-bits versie van Windows, installeert het ODBC 64-bits installatieprogramma zowel 32-bits als 64-bits ODBC-stuurprogramma's. Als u een 32-bits versie van Windows gebruikt, gebruikt u het ODBC x86-installatieprogramma. Op niet-Windows-platforms zijn er slechts 64-bits versies van het stuurprogramma beschikbaar.
De tabel bevat historische combinaties voor upgradeplanning. Gebruik de huidige PHP-driverversie en de vermelde ODBC-versies voor een nieuwe installatie. Compatibiliteit met een oudere versie verlengt de ondersteuningslevenscyclus ervan niet. Controleer zowel de ondersteuningslevenscyclus van de PHP-driver als de door PHP ondersteunde versies.
Een lege cel betekent niet dat de PHP-driver die ODBC-versie per se afwijst. Individuele functies kunnen nieuwere ODBC-versies vereisen dan de basiscombinatie.
| Versie van PHP-stuurprogramma → ↓ ODBC-stuurprogrammaversie |
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-stuurprogramma 18 | Yes | Yes | Yes | Yes | ||||||||
| ODBC-stuurprogramma 17 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |||
| ODBC-stuurprogramma 13.1 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| ODBC-stuurprogramma 13 | Yes | |||||||||||
| ODBC-stuurprogramma 11 | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Als u het SQLSRV-stuurprogramma gebruikt, retourneert sqlsrv_client_info informatie over welke versie van sql Server Microsoft ODBC-stuurprogramma voor SQL Server wordt gebruikt door de Microsoft-stuurprogramma's voor PHP voor SQL Server. Als u het PDO_SQLSRV-stuurprogramma gebruikt, kunt u PDO::getAttribute gebruiken om de versie te detecteren.
SQL Server
Voor ondersteunde SQL Server-versies, zie Ondersteunde databaseversies.
Evalueer de ondersteuning per doelsysteem afzonderlijk voor SQL Server, Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics, SQL Database in Microsoft Fabric en Warehouse in Microsoft Fabric. Installatievereisten zijn client-side vereisten en garanderen niet dat elke authenticatiemethode, verbindingsoptie, Transact-SQL (T-SQL)-functie of datatype op elk doel beschikbaar is. Gebruik de ondersteuningsmatrix en de documentatie van het beoogde product voor het scenario dat je applicatie gebruikt.
Besturingssystemen
Voor ondersteunde besturingssystemen, zie Ondersteunde besturingssystemen.
Stuurprogrammaversies
Elke release van de Microsoft Drivers for PHP for SQL Server levert SQLSRV- en PDO_SQLSRV driverbestanden in threadveilige en niet-threadveilige varianten. Op Windows is elke variant ook gebouwd voor 32-bit en 64-bit PHP. Match het driverbestand aan je PHP-versie, thread-safety-modus en architectuur. Om een driverbestand in te schakelen nadat je het hebt gedownload, zie De Microsoft Drivers voor PHP voor SQL Server laden.
Installeer op Linux en macOS de drivers met PIE, de PHP-installer voor extensies, zoals beschreven in de Linux- en macOS-installatie-instructies. PIE vervangt het verouderde PHP Extension Community Library (PECL) pakketsysteem en noemt de geïnstalleerde extensie sqlsrv.so of pdo_sqlsrv.so. De volgende tabellen geven de bestandsnamen weer van de vooraf gebouwde binaire pakketten die je handmatig downloadt van de Microsoft Drivers for PHP for SQL Server releases-pagina.
De volgende tabellen geven een overzicht van de bestanden in de 5.13-releasepakketten. In bestandsnamen betekenen ts en TS thread-safe, en nts en NTS betekenen niet-thread-safe.
Windows-stuurprogrammabestanden
Het Windows_5.13.xRTW.zip pakket bevat deze bestanden.
| SQLSRV-bestand | PDO_SQLSRV-bestand | PHP-versie | Draadveilig? | Architecture |
|---|---|---|---|---|
php_sqlsrv_83_nts_x86.dll |
php_pdo_sqlsrv_83_nts_x86.dll |
8.3 | no | 32-bit |
php_sqlsrv_83_ts_x86.dll |
php_pdo_sqlsrv_83_ts_x86.dll |
8.3 | yes | 32-bit |
php_sqlsrv_83_nts_x64.dll |
php_pdo_sqlsrv_83_nts_x64.dll |
8.3 | no | 64-bit |
php_sqlsrv_83_ts_x64.dll |
php_pdo_sqlsrv_83_ts_x64.dll |
8.3 | yes | 64-bit |
php_sqlsrv_84_nts_x86.dll |
php_pdo_sqlsrv_84_nts_x86.dll |
8.4 | no | 32-bit |
php_sqlsrv_84_ts_x86.dll |
php_pdo_sqlsrv_84_ts_x86.dll |
8.4 | yes | 32-bit |
php_sqlsrv_84_nts_x64.dll |
php_pdo_sqlsrv_84_nts_x64.dll |
8.4 | no | 64-bit |
php_sqlsrv_84_ts_x64.dll |
php_pdo_sqlsrv_84_ts_x64.dll |
8.4 | yes | 64-bit |
php_sqlsrv_85_nts_x86.dll |
php_pdo_sqlsrv_85_nts_x86.dll |
8.5 | no | 32-bit |
php_sqlsrv_85_ts_x86.dll |
php_pdo_sqlsrv_85_ts_x86.dll |
8.5 | yes | 32-bit |
php_sqlsrv_85_nts_x64.dll |
php_pdo_sqlsrv_85_nts_x64.dll |
8.5 | no | 64-bit |
php_sqlsrv_85_ts_x64.dll |
php_pdo_sqlsrv_85_ts_x64.dll |
8.5 | yes | 64-bit |
Gebruik een niet-thread-veilig driverbestand met een niet-threadveilige PHP-build, en een thread-safe driverbestand met een thread-veilige PHP-build. De commandoregelinterface (CLI) kan elk van beide builds gebruiken. Om te bevestigen welke build je hebt, voer php -i uit en controleer je de Thread Safety-waarde.
driverbestanden voor Linux en macOS
De pakketten Linux_5.13.xRTW.tar.gz en Mac_5.13.xRTW.tar.gz bevatten deze bestanden. Het Linux-archief bevat x64-binaire bestanden en het macOS-archief bevat Arm64-binaire bestanden.
Vooraf gebouwde bestanden moeten ook overeenkomen met de native bibliotheken van je besturingssysteem. De Linux 5.13.3-binaries vereisen glibc 2.38 en latere versies en een C++-runtime die GLIBCXX_3.4.32 biedt. De macOS 5.13.3-binaries verklaren macOS 26 als hun minimale implementatietarget. Deze binaire vereisten staan los van besturingssysteemondersteuning voor broncode-builds.
Gebruik PIE wanneer de architectuur of de native-bibliotheekvereisten van het archief niet overeenkomen met je PHP-installatie. PIE bouwt tegen de geïnstalleerde PHP- en native bibliotheken. Vervang systeembibliotheken niet handmatig om een vooraf gebouwde extensie te laden.
| SQLSRV-bestand | PDO_SQLSRV-bestand | PHP-versie | Draadveilig? |
|---|---|---|---|
SQLSRV_8.3_NTS.so |
PDO_SQLSRV_8.3_NTS.so |
8.3 | no |
SQLSRV_8.3_TS.so |
PDO_SQLSRV_8.3_TS.so |
8.3 | yes |
SQLSRV_8.4_NTS.so |
PDO_SQLSRV_8.4_NTS.so |
8.4 | no |
SQLSRV_8.4_TS.so |
PDO_SQLSRV_8.4_TS.so |
8.4 | yes |
SQLSRV_8.5_NTS.so |
PDO_SQLSRV_8.5_NTS.so |
8.5 | no |
SQLSRV_8.5_TS.so |
PDO_SQLSRV_8.5_TS.so |
8.5 | yes |
Kopieer elk bestand dat je nodig hebt naar je PHP-extensiemap. Je kunt de bestandsnaam van het pakket behouden en schrijven extension=SQLSRV_8.4_NTS.so, of het bestand hernoemen naar sqlsrv.so en het korte formulier extension=sqlsrvschrijven. Pas dezelfde naamgeving toe op PDO_SQLSRV. Om de extensiemap te vinden, voer php -i | grep extension_dir uit. Volg De stuurprogramma's laden op Linux en macOS om de extensies in het juiste configuratiebestand in te schakelen en laad PHP Data Objects (PDO) voordat PDO_SQLSRV wordt geladen.
Eerdere versies
Voor de driverbestanden die zijn opgenomen in releases vóór 5.13, download het pakket van die release van de Microsoft Drivers for PHP for SQL Server releases-pagina en geef de inhoud weer. Releases vóór 5.12 brengen een apart pakket uit voor elk besturingssysteem en elke PHP-versie in plaats van één enkel pakket per platform.
Controleer de gekozen omgeving
Voer deze controles uit nadat je de PHP-extensies en ODBC-driver hebt geïnstalleerd, maar voordat je een webserver configureert:
php --version
php --ini
php --ri sqlsrv
php --ri pdo_sqlsrv
De laatste twee commando's moeten aparte module-informatiesecties weergeven. Als een van beide commando's meldt dat de extensie niet aanwezig is, voltooi dan de installatie- en laadprocedure van het platform voordat je een databaseverbinding test.
Maak verify-php-drivers.php aan om beide PHP-API's te controleren zonder inloggegevens te vereisen:
<?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);
Voer het uit met het PHP-uitvoerbare bestand dat de applicatie bedient:
php verify-php-drivers.php
Verwachte uitvoer:
SQLSRV and PDO_SQLSRV are loaded.
Deze controle controleert het laden van extensies. Het verifieert geen ODBC-connectiviteit, authenticatie, certificaatvertrouwen, netwerktoegang of databaserechten.
Verwijder verify-php-drivers.php nadat je het resultaat hebt genoteerd.
Diagnosticeer mislukte vereisten
| Symptom | Waarschijnlijke eigenaar | Cheque |
|---|---|---|
PHP Startup: Unable to load dynamic library |
Selectie van PHP-runtime of extensie | PHP-minorversie, architectuur, thread-safety-modus, extension_dir, en exacte bestandsnaam |
Call to undefined function sqlsrv_connect() |
configuratie van de SQLSRV-extensie |
php --ri sqlsrv, de actieve php.ini, en gescande .ini bestanden |
PDOException: could not find driver |
PDO_SQLSRV-uitbreiding of laadvolgorde van PDO |
php --ri pdo_sqlsrv, PDO::getAvailableDrivers(), en of PDO eerst wordt geladen |
Ontbrekende msodbcsql- of libodbc-bibliotheek |
ODBC-installatie of besturingssysteemloader | ODBC-pakket, architectuur en afhankelijkheden van gedeelde bibliotheken zijn geïnstalleerd |
| CLI slaagt, maar de website faalt | SAPI-specifieke PHP-configuratie | Vergelijk php --ini met een tijdelijke phpinfo() pagina na het beperken van de toegang tot de diagnostische pagina |
| Extensie laadt, maar verbinding faalt | ODBC, netwerk, authenticatie, certificaat of databasedoel | Leg de SQLSRV-foutverzameling of PDO-uitzondering vast en onderzoek de gerapporteerde SQLSTATE |