Wymagania systemowe dotyczące sterowników firmy Microsoft dla języka PHP dla programu SQL Server

Pobieranie sterownika PHP

Ten artykuł wymienia komponenty, które musisz zainstalować na swoim systemie, aby uzyskać dostęp do danych w SQL Server lub Azure SQL Database, korzystając z sterownika SQLSRV lub PDO_SQLSRV.

Więcej informacji o cyklach życia wsparcia i wymaganiach sterowników PHP można znaleźć w macierzy wsparcia. Sterowniki SQLSRV i PDO_SQLSRV w każdej wersji mają te same wymagania dotyczące PHP, systemu operacyjnego, architektury, bezpieczeństwa wątków i ODBC.

Jak elementy stosu sterowników współdziałają

Aplikacja PHP nie łączy się bezpośrednio z serwerem bazy danych. Każda warstwa musi być kompatybilna z warstwą sąsiedzącą:

Warstwa Co wybierasz lub konfigurujesz Jak wygląda niedopasowanie
Application Funkcje SQLSRV lub klasy i atrybuty PDO_SQLSRV Niezdefiniowane funkcje, niedostępny sterownik PDO lub błędy na poziomie aplikacji
Rozszerzenie PHP Pliki SQLSRV i PDO_SQLSRV stworzone dla podrzędnej wersji PHP, architektury oraz trybu bezpieczeństwa wątków Ostrzeżenie o uruchomieniu PHP, błąd ładowania modułu lub awaria procesu
środowisko uruchomieniowe PHP Interfejs wiersza poleceń (CLI), moduł Apache, konfiguracja PHP-FPM lub IIS FastCGI CLI ładuje sterowniki, ale aplikacja webowa nie
Sterownik ODBC firmy Microsoft Wersja wspierana przez wybraną wersję sterownika PHP Awarie połączenia lub brakująca biblioteka ODBC
System operacyjny Obsługiwana wersja i architektura z wymaganym środowiskiem uruchomieniowym i pakietami kompilacyjnymi Brak kompatybilnego pakietu, nierozwiązana biblioteka współdzielona lub niepowodzenie kompilacji ze źródeł
Produkt bazodanowy Wspierany cel SQL Server lub Azure SQL Błędy specyficzne dla wersji serwera lub funkcji po nawiązaniu połączenia

SQLSRV i PDO_SQLSRV oferują różne API PHP na tym samym sterowniku ODBC. Zainstaluj obie, gdy Twoja aplikacja korzysta z obu interfejsów API. Zainstalowanie jednego rozszerzenia nie powoduje automatycznego zainstalowania ani włączenia drugiego.

API Model programowania Sprawdzenie zależne od instalacji
SQLSRV Funkcje proceduralne sqlsrv_* i stałe SQLSRV extension_loaded('sqlsrv') i function_exists('sqlsrv_connect')
PDO_SQLSRV Klasy, atrybuty i wyjątki PHP Data Objects (PDO) extension_loaded('pdo_sqlsrv') i sqlsrv w PDO::getAvailableDrivers()

Rozszerzenia można instalować samodzielnie. PDO_SQLSRV wymaga też załadowania PDO przed PDO_SQLSRV.

Wybierz zgodny zestaw

Zanim pobierzesz lub zbudujesz sterownik, wykonaj następujące kontrole:

  1. Zidentyfikuj każdy runtime PHP obsługujący aplikację. Zaplanowane zadanie, worker wiersza poleceń, witryna IIS, moduł Apache oraz pula PHP-FPM mogą korzystać z różnych plików wykonywalnych PHP i różnych plików konfiguracyjnych.

  2. Wykonaj następujące polecenie dla każdego interpretera PHP:

    php -i | findstr /I "PHP Version Architecture Thread Safety extension_dir"
    

    Na Linuksie lub macOS używaj:

    php -i | grep -E "PHP Version|Thread Safety|extension_dir"
    file "$(php -r 'echo PHP_BINARY;')"
    

    Polecenie file podaje architekturę pliku wykonywalnego. Jeśli raportuje uniwersalny plik wykonywalny macOS, wyraźnie wybierz zamierzoną architekturę, np. arch -arm64 php --version lub arch -x86_64 php --version. Używaj tej samej architektury podczas budowania, ładowania i testowania rozszerzeń.

  3. Wybierz wydanie sterownika PHP, które obsługuje pomocniczą wersję PHP, system operacyjny oraz docelową bazę danych.

  4. Wybierz obsługiwaną wersję sterownika Microsoft ODBC z tabeli zgodności w tym artykule.

  5. Dopasuj plik rozszerzenia lub build PIE do architektury PHP i trybu bezpieczeństwa wątków. Nie kopiuj rozszerzenia z innej instalacji PHP, chyba że wszystkie te wartości się zgadzają.

  6. Konfiguruj i weryfikuj CLI oraz środowiska uruchomieniowe serwera WWW osobno. Pomyślne wykonanie polecenia php -m dowodzi jedynie, że środowisko uruchomieniowe CLI załadowało rozszerzenie.

PHP

Pobierz pliki binarne PHP ze strony PHP. Wybierz wersję PHP z listy w obsłudze wersji PHP.

Bezpieczeństwo wątkowe i architektura

Plik kompilacji PHP i plik rozszerzenia muszą zgadzać się co do obu wartości.

Wartość PHP Wybór wymaganego sterownika
Thread Safety => enabled Plik sterownika bezpieczny dla wątków (ts lub TS)
Thread Safety => disabled Plik sterownika niewątkowo bezpieczny (nts lub NTS)
Architecture => x64 64-bitowy plik sterownika oraz 64-bitowe komponenty ODBC
Architecture => x86 32-bitowy plik sterownika Windows oraz 32-bitowe komponenty ODBC

CLI może korzystać zarówno z bezpiecznej dla wątków lub bezwątkowej wersji PHP. Wybierz rozszerzenie według zgłoszonej wartości, a nie zakładając, że każdy build CLI nie jest bezpieczny wielowątkowo.

sterownik ODBC

Zainstaluj wspierany sterownik Microsoft ODBC dla SQL Server na komputerze, na którym działa PHP. Pobierz sterownik z Download ODBC Driver for SQL Server.

Jeśli pobierasz wersję sterownika systemu Windows w 64-bitowej wersji systemu Windows, instalator 64-bitowy ODBC instaluje zarówno 32-bitowe, jak i 64-bitowe sterowniki ODBC. Jeśli używasz 32-bitowej wersji systemu Windows, użyj instalatora X86 ODBC. Na platformach innych niż Windows dostępne są tylko 64-bitowe wersje sterownika.

Tabela zawiera dotychczasowe kombinacje do planowania modernizacji. Do nowej instalacji użyj aktualnej wersji sterownika PHP oraz wymienionych dla niej wersji ODBC. Kompatybilność ze starszą wersją nie przedłuża jej cyklu wsparcia. Sprawdź zarówno cykl wsparcia sterowników PHP , jak i obsługiwane wersje PHP.

Pusta komórka nie oznacza, że sterownik PHP koniecznie odrzuca tę wersję ODBC. Poszczególne funkcje mogą wymagać nowszych wersji ODBC niż kombinacja bazowa.

wersja sterownika PHP
— wersja sterownika ODBC
5.13 5.12 5.11 5.10 5.9 5.8 5.6 5.3 5.2 4.3 4.0 3.2
Sterownik ODBC 18 Tak Tak Tak Tak
Sterownik ODBC 17 Tak Tak Tak Tak Tak Tak Tak Tak Tak
Sterownik ODBC 13.1 Tak Tak Tak Tak Tak Tak Tak Tak Tak Tak
Sterownik ODBC 13 Tak
Sterownik ODBC 11 Tak Tak Tak Tak Tak Tak Tak

Jeśli używasz sterownika SQLSRV, sqlsrv_client_info zwraca informacje o wersji programu SQL Server, której sterownik Microsoft ODBC dla SQL Server jest używany przez sterowniki Microsoft dla PHP dla SQL Server. Jeśli używasz sterownika PDO_SQLSRV, możesz użyć pdO::getAttribute , aby odnaleźć wersję.

SQL Server

Aby poznać wspierane wersje SQL Server, zobacz Obsługiwane wersje bazy danych.

Oceń wsparcie docelowe osobno dla SQL Server, Azure SQL Database, Azure SQL Managed Instance, Azure Synapse Analytics, bazy danych SQL w Microsoft Fabric oraz Warehouse w Microsoft Fabric. Wymagania instalacyjne są wymaganiami po stronie klienta i nie oznaczają, że każda metoda uwierzytelniania, opcja połączenia, funkcja Transact-SQL (T-SQL) czy typ danych jest dostępny na każdym celu. Użyj macierzy wsparcia oraz dokumentacji produktu docelowego dla scenariusza, którego używa twoja aplikacja.

Systemy operacyjne

Aby uzyskać informacje o wspieranych systemach operacyjnych, zobacz Wspierane systemy operacyjne.

Wersje sterowników

Każda wersja Microsoft Drivers for PHP for SQL Server zawiera pliki sterowników SQLSRV i PDO_SQLSRV w wariantach bezpiecznych dla wątków i niebezpiecznych dla wątków. Na Windows każda wersja jest również zbudowana z myślą o 32-bitowym i 64-bitowym PHP. Dopasuj plik sterownika do wersji PHP, trybu bezpieczeństwa wielowątkowego i architektury. Aby włączyć plik sterownika po jego pobraniu, zobacz Ładowanie sterowników Microsoft Drivers for PHP for SQL Server.

Na Linuksie i macOS instaluj biblioteki za pomocą PIE, czyli instalatora PHP dla rozszerzeń, zgodnie z instrukcjami instalacji Linuksa i macOS. PIE zastępuje przestarzały system pakietów PHP Extension Community Library (PECL) i nadaje zainstalowanemu rozszerzeniu nazwę sqlsrv.so lub pdo_sqlsrv.so. Poniższe tabele przedstawiają nazwy plików gotowych pakietów binarnych, które ręcznie pobierasz ze strony Microsoft Drivers for PHP for SQL Server Releases.

Poniższe tabele przedstawiają pliki w pakietach wydań 5.13. W nazwach plików ts i nts oznaczają bezpieczny dla wątków, a NTS i TS oznaczają niebezpieczny dla wątków.

Pliki sterowników Windows

Pakiet Windows_5.13.xRTW.zip zawiera te pliki.

Plik SQLSRV plik PDO_SQLSRV Wersja języka PHP Bezpieczny dla wątków? 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

Użyj niewątkowego pliku sterownika z niewątkowym buildem PHP oraz wątkowo bezpiecznego pliku sterownika z wątkowo bezpiecznym buildem PHP. Interfejs wiersza poleceń (CLI) może korzystać z dowolnej z dwóch wersji. Aby potwierdzić, jaki masz build, uruchom php -i i sprawdź wartość Thread Safety.

Pliki sterowników Linux i macOS

Pakiety Linux_5.13.xRTW.tar.gz i Mac_5.13.xRTW.tar.gz zawierają te pliki. Archiwum Linuksa zawiera pliki binarne x64, a archiwum macOS zawiera pliki Arm64.

Wstępnie skompilowane pliki muszą również odpowiadać natywnym bibliotekom systemu operacyjnego. Pliki binarne Linuksa 5.13.3 wymagają wersji glibc 2.38 i nowszych oraz środowiska uruchomieniowego C++, które zapewnia GLIBCXX_3.4.32. Pliki binarne macOS 5.13.3 deklarują macOS 26 jako minimalny cel wdrożenia. Te wymagania binarne są odrębne od wsparcia systemu operacyjnego dla kompilacji ze źródeł.

Używaj PIE, gdy architektura pakietu lub wymagania dotyczące natywnej biblioteki nie są zgodne z Twoją instalacją PHP. Kompilacje PIE dla zainstalowanego PHP i natywnych bibliotek. Nie zastępuj ręcznie bibliotek systemowych, aby załadować wstępnie skompilowane rozszerzenie.

Plik SQLSRV plik PDO_SQLSRV Wersja języka PHP Bezpieczny dla wątków?
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

Skopiuj każdy plik, którego potrzebujesz, do katalogu rozszerzenia PHP. Możesz zachować nazwę pliku pakietu i zapisać extension=SQLSRV_8.4_NTS.so, albo zmienić nazwę pliku na sqlsrv.so i zapisać krótką formę extension=sqlsrv. Zastosuj ten sam wybór nazwy do PDO_SQLSRV. Aby znaleźć katalog rozszerzenia, uruchom php -i | grep extension_dir. Postępuj zgodnie z instrukcjami w Załaduj sterowniki w systemach Linux i macOS, aby włączyć rozszerzenia w odpowiednim pliku konfiguracyjnym i załadować PHP Data Objects (PDO) przed PDO_SQLSRV.

Wcześniejsze wersje

Aby uzyskać pliki sterowników zawarte w wydaniach wcześniejszych niż 5.13, pobierz pakiet dla tego wydania ze strony wydań Microsoft Drivers for PHP for SQL Server i wyświetl jego zawartość. Wydania przed 5.12 publikują osobny pakiet dla każdego systemu operacyjnego i wersji PHP, zamiast pojedynczego pakietu na platformę.

Zweryfikuj wybrane środowisko

Wykonaj te kontrole po zainstalowaniu rozszerzeń PHP i sterownika ODBC, ale przed skonfigurowaniem serwera WWW:

php --version
php --ini
php --ri sqlsrv
php --ri pdo_sqlsrv

Ostatnie dwa polecenia muszą wyświetlać oddzielne sekcje informacji o module. Jeśli któreś z poleceń zgłasza brak rozszerzenia, zakończ procedurę instalacji i ładowania platformy przed testowaniem połączenia z bazą danych.

Stwórz verify-php-drivers.php tak, aby sprawdzić oba API PHP bez potrzeby danych logowania:

<?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);

Uruchom go z plikiem wykonywalnym PHP, który obsługuje aplikację:

php verify-php-drivers.php

Oczekiwane dane wyjściowe:

SQLSRV and PDO_SQLSRV are loaded.

Ta kontrola weryfikuje ładowanie rozszerzenia. Nie weryfikuje łączności ODBC, uwierzytelniania, zaufania certyfikatów, dostępu do sieci ani uprawnień do bazy danych.

Usuń verify-php-drivers.php po nagraniu wyniku.

Diagnozowanie niepowodzeń wymagań

Objaw Prawdopodobny właściciel Sprawdzanie
PHP Startup: Unable to load dynamic library Wybór środowiska uruchomieniowego PHP lub rozszerzenia Pomocnicza wersja PHP, architektura, tryb extension_dirbezpieczeństwa wątków oraz dokładna nazwa pliku
Call to undefined function sqlsrv_connect() Konfiguracja rozszerzenia SQLSRV php --ri sqlsrv, aktywny php.ini i zeskanowane .ini pliki
PDOException: could not find driver Rozszerzenie PDO_SQLSRV lub kolejność ładowania PDO php --ri pdo_sqlsrv, PDO::getAvailableDrivers(), oraz czy PDO ładuje się jako pierwsze
Brak biblioteki libodbc lub msodbcsql Instalacja ODBC lub moduł ładujący systemu operacyjnego Zainstalowany pakiet ODBC, architektura pakietu i zależności bibliotek współdzielonych
CLI się powiódł, ale strona internetowa nie działa Konfiguracja PHP specyficzna dla SAPI Porównaj php --ini z tymczasową stroną phpinfo() po ograniczeniu dostępu do strony diagnostycznej
Rozszerzenie ładuje się, ale połączenie nie działa ODBC, sieć, uwierzytelnianie, certyfikat lub obiekt docelowy bazy danych Uchwyć kolekcję błędów SQLSRV lub wyjątek PDO i rozwiąż problem z raportowanym SQLSTATE