Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln listar de komponenter du måste installera på ditt system för att komma åt data i SQL Server eller Azure SQL Database genom att använda antingen SQLSRV eller PDO_SQLSRV-drivrutinen.
För mer information om supportlivscykler och krav på PHP-drivrutinerna, se supportmatrisen. SQLSRV- och PDO_SQLSRV drivrutinerna i varje version har samma PHP-, operativsystem-, arkitektur-, trådsäkerhets- och ODBC-krav.
Hur drivrutinsstacken passar ihop
En PHP-applikation ansluter inte direkt till databasservern. Varje lager måste vara kompatibelt med lagret intill:
| Skikt | Vad du väljer eller konfigurerar | Hur en mismatch ser ut |
|---|---|---|
| Application | SQLSRV-funktioner eller PDO_SQLSRV klasser och attribut | Odefinierade funktioner, otillgänglig PDO-drivrutin eller applikationsnivåfel |
| PHP-tillägg | SQLSRV och PDO_SQLSRV filer byggda för PHP-minorversionen, arkitekturen och trådsäkerhetsläget | PHP-startvarning, fel vid inläsning av modul eller processkrasch |
| PHP-runtime | Kommandoradsgränssnitt (CLI), Apache-modul, PHP-FPM eller IIS FastCGI-konfiguration | CLI:n laddar drivrutinerna men webbapplikationen gör det inte |
| Microsoft ODBC-drivrutin | En version som stöds av den valda PHP-drivrutinsversionen | Anslutningsfel eller ett saknat ODBC-bibliotek |
| Operativsystem | En stödd version och arkitektur med nödvändiga runtime- och build-paket | Inget kompatibelt paket, olöst beroende till delat bibliotek eller fel i källkodsbyggandet |
| Databasprodukt | Ett SQL Server- eller Azure SQL-mål som stöds | Serverversion- eller funktionsspecifika fel efter att en anslutning har etablerats |
SQLSRV och PDO_SQLSRV erbjuder olika PHP-API:er över samma ODBC-drivrutin. Installera båda när din applikation använder båda API:erna. Att installera ett tillägg installerar eller aktiverar inte automatiskt det andra.
| API | Programmeringsmodell | Installationsspecifik kontroll |
|---|---|---|
| SQLSRV | Procedurella funktioner sqlsrv_* och SQLSRV-konstanter |
extension_loaded('sqlsrv') och function_exists('sqlsrv_connect') |
| PDO_SQLSRV | PHP Data Objects (PDO)-klasser, attribut och undantag |
extension_loaded('pdo_sqlsrv') och sqlsrv i PDO::getAvailableDrivers() |
Tilläggen kan installeras oberoende. PDO_SQLSRV kräver också att PDO laddas innan PDO_SQLSRV.
Välj en kompatibel uppsättning
Innan du laddar ner eller bygger en drivrutin, gör dessa kontroller:
Identifiera varje PHP-runtime som betjänar applikationen. En schemalagd uppgift, kommandoradsarbetare, IIS-plats, Apache-modul och PHP-FPM pool kan använda olika PHP-exekverbara filer och konfigurationsfiler.
Kör följande kommando med varje PHP-exekverbar fil:
php -i | findstr /I "PHP Version Architecture Thread Safety extension_dir"På Linux eller macOS, använd:
php -i | grep -E "PHP Version|Thread Safety|extension_dir" file "$(php -r 'echo PHP_BINARY;')"Kommandot
filerapporterar den exekverbara filens arkitektur. Om den rapporterar en universell macOS-exekverbar fil, välj uttryckligen den avsedda arkitekturen, såsomarch -arm64 php --versionellerarch -x86_64 php --version. Använd samma arkitekturval när du bygger, laddar och testar tilläggen.Välj en PHP-drivrutinsversion som stödjer PHP-minorversionen, operativsystemet och databasmålet.
Välj en stödd version av Microsoft ODBC-drivrutiner från kompatibilitetstabellen i denna artikel.
Anpassa tilläggsfilen eller PIE-bygget till PHP-arkitekturen och trådsäkerhetsläget. Kopiera inte en tillägg från en annan PHP-installation om inte alla dessa värden stämmer överens.
Konfigurera och verifiera CLI- och webbserverns körmiljöer separat. Ett lyckat
php -mkommando bevisar endast att CLI-runtimen laddade tillägget.
PHP
Ladda ner PHP-binärfiler från PHP:s webbplats. Välj en PHP-version som finns listad i PHP-versionsstödet.
Aktivera drivrutinsfilen som matchar din PHP-version. För filnamn, se Drivrutinsversioner. Ladda ner filerna från Ladda ner Microsoft Drivers for PHP for SQL Server. För konfigurationsinstruktioner, se Läsa in Microsoft Drivers för PHP för SQL Server.
Välj en webbserver och PHP-integrationsmetod som stöds av PHP och ditt applikationsramverk. Följ PHP-installationsdokumentationen och ramverkets driftsättningsinstruktioner för att konfigurera webbservern så att den kör PHP. Verifiera att tillägget laddas i webbserverns runtime separat från CLI:n.
Trådsäkerhet och arkitektur
PHP-byggfilen och tilläggsfilen måste vara överens om båda värdena.
| PHP-värde | Val av drivrutin krävs |
|---|---|
Thread Safety => enabled |
Trådsäker (ts eller TS) drivrutinsfil |
Thread Safety => disabled |
Icke-trådsäker (nts eller NTS) drivrutinsfil |
Architecture => x64 |
64-bitars drivrutinsfil och 64-bitars ODBC-komponenter |
Architecture => x86 |
32-bitars Windows-drivrutinsfil och 32-bitars ODBC-komponenter |
CLI:n kan använda antingen en trådsäker eller icke-trådsäker PHP-bygg. Välj tillägget efter det rapporterade värdet, inte genom att anta att varje CLI-bygge är icke-trådsäker.
ODBC-drivrutin
Installera en stödd Microsoft ODBC-drivrutin för SQL Server på datorn som kör PHP. Ladda ner drivrutinen från Download ODBC Driver for SQL Server.
Om du laddar ned Windows-versionen av drivrutinen på en 64-bitarsversion av Windows installerar ODBC 64-bitars installationsprogrammet både 32-bitars- och 64-bitars ODBC-drivrutiner. Om du använder en 32-bitarsversion av Windows använder du installationsprogrammet ODBC x86. På andra plattformar än Windows är endast 64-bitarsversioner av drivrutinen tillgängliga.
Tabellen innehåller historiska kombinationer för uppgraderingsplanering. Använd den nuvarande PHP-drivrutinsversionen och dess listade ODBC-versioner för en ny installation. Kompatibilitet med en äldre version omfattar inte dess supportlivscykel. Kontrollera både PHP-drivrutinens stödlivscykel och PHP:s stödda versioner.
En tom cell betyder inte nödvändigtvis att PHP-drivrutinen avvisar den ODBC-versionen. Enskilda funktioner kan kräva nyare ODBC-versioner än grundkombinationen.
| PHP-drivrutinsversion → ↓ ODBC-drivrutinsversion |
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-drivrutin 18 | Yes | Yes | Yes | Yes | ||||||||
| ODBC-drivrutin 17 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |||
| ODBC-drivrutin 13.1 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| ODBC-drivrutin 13 | Yes | |||||||||||
| ODBC-drivrutin 11 | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Om du använder SQLSRV-drivrutinen returnerar sqlsrv_client_info information om vilken version av SQL Server Microsoft ODBC-drivrutin för SQL Server som används av Microsoft Drivers for PHP för SQL Server. Om du använder drivrutinen PDO_SQLSRV kan du använda PDO::getAttribute för att identifiera versionen.
SQL Server
För stödda SQL Server-versioner, se Stödda databasversioner.
Utvärdera målstödet separat för SQL Server, Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics, SQL Database i Microsoft Fabric och Warehouse i Microsoft Fabric. Installationskraven är klientbaserade krav och fastställer inte att varje autentiseringsmetod, anslutningsalternativ, Transact-SQL (T-SQL) funktion eller datatyp är tillgänglig på varje mål. Använd supportmatrisen och målproduktens dokumentation för det scenario som används av din applikation.
Operativsystem
För stödda operativsystem, se Stödda operativsystem.
Drivrutinsversioner
Varje version av Microsoft Drivers for PHP för SQL Server levereras med SQLSRV- och PDO_SQLSRV-drivrutinsfiler i trådsäkra och icke-trådsäkra varianter. På Windows är varje variant också byggd för 32-bitars och 64-bitars PHP. Anpassa drivrutinsfilen till din PHP-version, trådsäkerhetsläge och arkitektur. För att aktivera en drivrutinsfil efter att du laddat ner den, se Loading the Microsoft Drivers for PHP for SQL Server.
På Linux och macOS installerar du tilläggen med PIE, PHP-installationsprogrammet för tillägg, enligt beskrivningen i installationsinstruktionerna för Linux och macOS. PIE ersätter det föråldrade PHP Extension Community Library (PECL)-paketsystemet och namnger det installerade tillägget sqlsrv.so eller pdo_sqlsrv.so. Följande tabeller listar filnamnen för de förbyggda binära paket som du manuellt laddar ner från sidan Microsoft Drivers for PHP for SQL Server releases.
Följande tabeller listar filerna i utgåvopaketen för 5.13. I filnamn betyder ts och TS trådsäker, och nts och NTS betyder icke-trådsäker.
Windows-drivrutinsfiler
Paketet Windows_5.13.xRTW.zip innehåller dessa filer.
| SQLSRV-filen | PDO_SQLSRV fil | PHP-version | Trådsäker? | 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 |
Använd en drivrutinsfil som inte är trådsäker med en icke-trådsäker PHP-bygg, och en trådsäker drivrutinsfil med en trådsäker PHP-bygg. Kommandoradsgränssnittet (CLI) kan använda något av byggena. För att bekräfta vilken build du har, kör php -i och kontrollera Thread Safety-värdet .
Linux- och macOS-drivrutinsfiler
Paketen Mac_5.13.xRTW.tar.gz och Linux_5.13.xRTW.tar.gz innehåller dessa filer. Linux-arkivet innehåller x64-binärer, och macOS-arkivet innehåller Arm64-binärer.
Färdigbyggda filer måste också matcha operativsystemets naturliga bibliotek. Linux 5.13.3-binärfilerna kräver glibc 2.38 och senare versioner samt en C++-runtime som tillhandahåller GLIBCXX_3.4.32. macOS 5.13.3-binärfilerna deklarerar macOS 26 som sitt minsta driftsättningsmål. Dessa binära krav är separata från operativsystemets stöd för källkodsbyggen.
Använd PIE när arkivets arkitektur eller krav på native-bibliotek inte stämmer överens med din PHP-installation. PIE-byggen för installerade PHP- och nativa bibliotek. Byt inte ut systembibliotek manuellt för att ladda ett färdigbyggt tillägg.
| SQLSRV-filen | PDO_SQLSRV fil | PHP-version | Trådsäker? |
|---|---|---|---|
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 |
Kopiera varje fil du behöver till din PHP-tilläggskatalog. Du kan behålla paketets filnamn och skriva extension=SQLSRV_8.4_NTS.so, eller byta namn på filen till sqlsrv.so och skriva den korta formen extension=sqlsrv. Använd samma namngivningsval för PDO_SQLSRV. För att hitta tilläggskatalogen, kör php -i | grep extension_dir. Följ Läs in drivrutinerna i Linux och macOS för att aktivera tilläggen i rätt konfigurationsfil och ladda PHP Data Objects (PDO) innan PDO_SQLSRV.
Tidigare versioner
För drivrutinsfiler som ingår i versioner före 5.13, ladda ner paketet för den versionen från sidan Microsoft Drivers for PHP for SQL Server releases och lista dess innehåll. Utgåvor före 5.12 publicerar ett separat paket för varje operativsystem och PHP-version istället för ett enda paket per plattform.
Kontrollera den valda miljön
Kör dessa kontroller efter installation av PHP-tilläggen och ODBC-drivrutinen, men innan du konfigurerar en webbserver:
php --version
php --ini
php --ri sqlsrv
php --ri pdo_sqlsrv
De två sista kommandona måste visa separata modulinformationssektioner. Om något av kommandona rapporterar att tillägget inte finns, slutför plattformens installations- och laddningsprocedur innan du testar en databasanslutning.
Skapa en verify-php-drivers.php för att kontrollera båda PHP-API:erna utan att kräva inloggningsuppgifter:
<?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);
Kör det med den PHP-körbara filen som betjänar applikationen:
php verify-php-drivers.php
Förväntat resultat:
SQLSRV and PDO_SQLSRV are loaded.
Denna kontroll verifierar inläsning av tillägg. Den verifierar inte ODBC-anslutning, autentisering, certifikatförtroende, nätverksåtkomst eller databasbehörigheter.
Radera verify-php-drivers.php efter att du har registrerat resultatet.
Diagnostisera kravfel
| Symtom | Sannolik ägare | Check |
|---|---|---|
PHP Startup: Unable to load dynamic library |
val av PHP-runtime eller tillägg | PHP-minorversion, arkitektur, trådsäkerhetsläge extension_diroch exakt filnamn |
Call to undefined function sqlsrv_connect() |
konfiguration av SQLSRV-tillägget |
php --ri sqlsrv, de aktiva php.ini, och skannade .ini-filer |
PDOException: could not find driver |
PDO_SQLSRV-tillägg eller PDO:s laddningsordning |
php --ri pdo_sqlsrv, PDO::getAvailableDrivers(), och om PDO laddas först |
Biblioteket msodbcsql eller libodbc saknas |
ODBC-installation eller operativsystemsläsare | Installerat ODBC-paket, arkitektur och beroenden för delade bibliotek |
| CLI:n fungerar men webbplatsen fungerar inte | SAPI-specifik PHP-konfiguration | Jämför php --ini med en tillfällig phpinfo() sida efter att ha begränsat åtkomsten till diagnostiksidan |
| Tillägget laddas men anslutningen misslyckas | ODBC, nätverk, autentisering, certifikat eller databasmål | Fånga SQLSRV-felsamlingen eller PDO-undantaget och felsök den rapporterade SQLSTATE |