Systemkrav för Microsoft-drivrutiner för PHP för SQL Server

Ladda ned PHP-drivrutin

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:

  1. 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.

  2. 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 file rapporterar den exekverbara filens arkitektur. Om den rapporterar en universell macOS-exekverbar fil, välj uttryckligen den avsedda arkitekturen, såsom arch -arm64 php --version eller arch -x86_64 php --version. Använd samma arkitekturval när du bygger, laddar och testar tilläggen.

  3. Välj en PHP-drivrutinsversion som stödjer PHP-minorversionen, operativsystemet och databasmålet.

  4. Välj en stödd version av Microsoft ODBC-drivrutiner från kompatibilitetstabellen i denna artikel.

  5. 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.

  6. Konfigurera och verifiera CLI- och webbserverns körmiljöer separat. Ett lyckat php -m kommando 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.

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