Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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:
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.
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
filepodaje architekturę pliku wykonywalnego. Jeśli raportuje uniwersalny plik wykonywalny macOS, wyraźnie wybierz zamierzoną architekturę, np.arch -arm64 php --versionlubarch -x86_64 php --version. Używaj tej samej architektury podczas budowania, ładowania i testowania rozszerzeń.Wybierz wydanie sterownika PHP, które obsługuje pomocniczą wersję PHP, system operacyjny oraz docelową bazę danych.
Wybierz obsługiwaną wersję sterownika Microsoft ODBC z tabeli zgodności w tym artykule.
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ą.
Konfiguruj i weryfikuj CLI oraz środowiska uruchomieniowe serwera WWW osobno. Pomyślne wykonanie polecenia
php -mdowodzi 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.
Włącz plik sterownika odpowiadający wersji PHP. Nazwy plików: zobacz Wersje sterowników. Pobierz pliki z Download the Microsoft Drivers for PHP for SQL Server. Instrukcje konfiguracyjne znajdują się w artykule Load the Microsoft Drivers for PHP for SQL Server.
Wybierz serwer WWW i metodę integracji z PHP obsługiwaną przez PHP oraz framework Twojej aplikacji. Stosuj się do dokumentacji instalacji PHP oraz instrukcji wdrożenia frameworka, aby skonfigurować serwer WWW do uruchamiania PHP. Zweryfikować ładowanie rozszerzenia w środowisku uruchomieniowym serwera WWW oddzielnie od CLI.
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 |