Systeemvereisten voor de Microsoft-stuurprogramma's voor PHP voor SQL Server

PHP-stuurprogramma downloaden

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:

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

  2. 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 file commando rapporteert de architectuur van het uitvoerbare bestand. Als het een universeel macOS-uitvoerbaar bestand rapporteert, selecteer dan expliciet de bedoelde architectuur, zoals arch -arm64 php --version of arch -x86_64 php --version. Gebruik dezelfde architectuurkeuze bij het bouwen, laden en testen van de uitbreidingen.

  3. Selecteer een PHP-driverrelease die de PHP-minorversie, besturingssysteem en databasedoel ondersteunt.

  4. Selecteer een ondersteunde Microsoft ODBC Driver-versie uit de compatibiliteitstabel in dit artikel.

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

  6. Configureer en controleer de CLI- en webserver-runtimes apart. Een succesvol php -m commando 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.

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