Töltse le a Microsoft PHP-illesztőprogramjait az SQL Serverhez

Az SQLSRV és a PDO_SQLSRV illesztőprogramok PHP kiterjesztések. A PHP betölti őket, amikor a PHP folyamat elindul, a(z) php.ini és a további .ini fájlok beolvasásával.

A betöltés elkülönül a telepítéstől. A kiterjesztés másolása vagy fordítása során egy fájl kerül a lemezre. A PHP nem használhatja az SQLSRV-t vagy a PDO_SQLSRV-t, amíg az aktív konfiguráció nem tartalmazza a helyes bejegyzést, és a PHP-folyamatot újra nem indítják.

Webes diagnosztikai oldalak védelme

Egy ideiglenes phpinfo() oldal létrehozása előtt konfiguráld be a webszervert úgy, hogy csak localhost kéréseket vagy hitelesített adminisztrátorokat engedjen le. Tartsd meg ezt a korlátozást, amíg nem törlöd az oldalt. phpinfo() képes környezeti változókat, hitelesítő adatokat és szerverkonfigurációt felfedni. Távolítsa el az oldalt azonnal az ellenőrzés után.

Értsd meg a PHP konfigurációs hatókörét

Minden PHP szerver alkalmazásprogramozási interfész (SAPI) eltérő futtatható fájlt és konfigurációt használhat:

Runtime Tipikus konfigurációs forrás Hogyan lehet azonosítani
Parancssori felület (CLI) Az php --ini által jelentett php.ini és a vizsgálati könyvtár Futtasd a(z) php --ini elemet a pontos végrehajtható fájllal
IIS FastCGI Az IIS FastCGI alkalmazásban konfigurált PHP futtatható fájl Ideiglenes phpinfo() oldal használata
Apache modul Az Apache PHP modul konfigurációja Ideiglenes phpinfo() oldal használata
PHP-FPM Az FPM futtatható fájl, pool, php.ini és beolvasási könyvtár Futtassa a verziózott FPM binárist a(z) -i használatával, vagy használjon egy ideiglenes phpinfo() oldalt
Hosszan futó feldolgozó A végrehajtható eszköz és a környezet, amely elindította a worker folyamatot Vizsgáld meg a worker szolgáltatást, és a módosítások elvégzése után indítsd újra

A CLI konfiguráció megváltoztatása nincs hatással az IIS-re, az Apache-ra vagy a PHP-FPM-re, ha azok más PHP-telepítést vagy keresési könyvtárat használnak.

Keresd meg a PHP konfigurációt

Futtatd ezeket a parancsokat az alkalmazásod által használt PHP futtatható fájllal:

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

Linuxon vagy macOS-en cseréld le a(z) findstr elemet erre: grep:

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

A file parancs azonosítja a kiválasztott futtatható fájl architektúráját. Egy univerzális macOS futtatható fájlhoz kövesse az explicit architektúraválasztásra vonatkozó útmutatót.

A Betöltött konfigurációs fájl és a További .ini fájlok keresése itt: értékek azonosítják a parancssoros folyamat által használt konfigurációt. Egy webszerver vagy PHP FastCGI Process Manager (PHP-FPM) folyamat más PHP futtatható fájlt vagy konfigurációs fájlt használhat. Használj ideiglenes oldalt phpinfo() a folyamat értékeinek azonosítására.

A fájl szerkesztése előtt rögzítsd a következőket:

  • A PHP végrehajtható fájl elérési útja és verziója.
  • A(z) php.ini betöltve.
  • A további .ini vizsgálati könyvtár.
  • A bővítmények könyvtára.
  • A szálbiztonsági mód és az architektúra.
  • Minden folyamat, amelyet újra kell indítani.

Készíts biztonsági másolatot minden módosított konfigurációs fájlról.

Töltsd be az illesztőprogramokat Windows rendszeren

A PHP Installer for Extensions (PIE) használatával történő telepítéshez először töltsd le és ellenőrizd a PIE-t. Futtasd a következő parancsokat abból a könyvtárból, amely a pie.phar elemet tartalmazza, azzal a PHP futtatható fájllal, amelynek be kell töltenie az illesztőprogramokat:

php .\pie.phar install microsoft/sqlsrv
php .\pie.phar install microsoft/pdo_sqlsrv

A PIE telepíti a(z) php_sqlsrv.dll és php_pdo_sqlsrv.dll elemeket. Ha a PIE nem tudja automatikusan engedélyezni a bővítményeket, távolíts el minden meglévő SQLSRV és PDO_SQLSRV bejegyzést az aktív php.ini konfigurációból, majd add hozzá:

extension=php_sqlsrv.dll
extension=php_pdo_sqlsrv.dll

Használj minden sofőrhöz csak egy bejegyzést. Újraindítsd a PHP folyamatot a konfiguráció megváltoztatása után.

ZIP telepítéshez másoljuk be a PHP minor verzióhoz, architektúrájához és szálbiztonsági módjához tartozó dinamikus link könyvtárakat (DLL-eket) a extension_dir könyvtárba. Egy PHP 8.5 x64 szálbiztos futtatókörnyezet az alábbi fájlneveket használja:

php_sqlsrv_85_ts_x64.dll
php_pdo_sqlsrv_85_ts_x64.dll

Adja hozzá mindkét fájlnevet a PHP-folyamat által használt php.ini elemhez:

extension=php_sqlsrv_85_ts_x64.dll
extension=php_pdo_sqlsrv_85_ts_x64.dll

Cseréld le a(z) 85, ts és x64 elemeket a PHP-futtatókörnyezeted értékeire. Ne keverj szálbiztos és nem szálbiztos fájlokat, 32 és 64 bites fájlokat, vagy egy másik PHP alverzióhoz készült fájlokat.

Telepítsd a drivereket Linuxra és macOS-re

Telepítsd a drivereket PIE használatával. További információért lásd a Linux és macOS telepítési útmutatót. A PIE telepíti a kiterjesztésfájlokat, és megpróbálja engedélyezni őket a platform PHP konfigurációs eszközeivel, vagy egy extension= bejegyzés hozzáadásával egy további .ini fájlba, illetve a szabványos php.ini. Ha a PIE azt jelenti, hogy nem tudott kiegészítőt engedélyezni, add hozzá magad a bejegyzést, és ellenőrizd az aktív konfigurációt.

Manuális telepítéshez válaszd ki azokat az előre összeállított .so fájlokat, amelyek megfelelnek a PHP verziódnak, architektúrának, szálbiztonsági módodnak és az operációs rendszered natív könyvtárainak. Nézd meg az előre összeállított Linux és macOS követelményeket; használd a PIE-t, ha nem felelnek meg a környezetednek.

Például a PHP 8.4 nem szálbiztos fájlok neve SQLSRV_8.4_NTS.so és PDO_SQLSRV_8.4_NTS.so. Helyezd el őket a php -i | grep extension_dir által visszaadott könyvtárba. Nevezd át őket erre: sqlsrv.so és pdo_sqlsrv.so, hogy a következő bejegyzéseket használd, vagy használd helyette a pontos csomagfájlneveket a bejegyzésekben. A bejegyzéseket az aktív PHP konfigurációdhoz az ebben a szakaszban leírt betöltési sorrendben add hozzá:

extension=sqlsrv.so
extension=pdo_sqlsrv.so

A PHP Data Objectsnak (PDO) a PDO_SQLSRV előtt kell betöltődnie. A PHP beolvassa a(z) php.ini elemet, mielőtt további .ini fájlokat ábécésorrendben beolvas. Ha a disztribúciód a(z) pdo.so-t egy beolvasott fájlból tölti be, helyezd el a PDO_SQLSRV bejegyzést egy később beolvasott fájlba, például a 30-pdo_sqlsrv.ini fájlba, amikor a PDO a(z) 10-pdo.ini-t használja. Akkor ne tedd be a PDO_SQLSRV bejegyzést php.ini .

Válaszd ki a kiterjesztési bejegyzéseket

Olyan bejegyzéseket használj, amelyek megfelelnek annak, ahogyan az illesztőprogramokat telepítették:

platform és módszer SQLSRV entry PDO_SQLSRV bejegyzés
PIE-vel rendelkező Windows extension=php_sqlsrv.dll extension=php_pdo_sqlsrv.dll
Windowsban kiadott ZIP Pontos verziós DLL név, például extension=php_sqlsrv_85_ts_x64.dll Pontos verziós DLL név, például extension=php_pdo_sqlsrv_85_ts_x64.dll
Linux vagy macOS PIE-val extension=sqlsrv.so extension=pdo_sqlsrv.so
Linux vagy macOS kiadási archívum, átnevezett fájlok extension=sqlsrv.so extension=pdo_sqlsrv.so
Linux- vagy macOS-kiadási archívum, eredeti fájlok A pontos archívfájl neve, például extension=SQLSRV_8.4_NTS.so Az archív fájl pontos neve, például extension=PDO_SQLSRV_8.4_NTS.so

Ne konfigurálj egyszerre rövid nevet és verziózott nevet ugyanahhoz a kiterjesztéshez. A PHP jelentheti, hogy egy modul már be van töltve, vagy folytathatja a régi fájl betöltését egy frissítés után.

Indítsd újra a PHP-t, hogy betöltsd az illesztőprogramokat

Indítsa újra a folyamatot egy kiterjesztési vagy konfigurációs fájl megváltoztatása után. Indítsd újra a webszervert, a PHP-FPM-et, a sorkezelőket és más hosszú ideig futó PHP-folyamatokat, amelyek betöltik az illesztőprogramot.

Az SQLSRV és a PDO_SQLSRV bővítmények függetlenül is betölthetőek, de telepítsd és ellenőrizd mindkettőt, ha az alkalmazás mindkét meghajtót használja. A PDO sok PHP csomagba van beépítve. Ha a PDO nincs beépítve, kapcsold be a PDO kiterjesztést PDO_SQLSRV előtt.

Ellenőrizd a betöltött illesztőprogramokat

Parancssori futtatókörnyezet esetén futtassa:

php --ri sqlsrv
php --ri pdo_sqlsrv
php -m | findstr /I "sqlsrv pdo_sqlsrv"

Linux rendszeren vagy macOS-en használd:

php --ri sqlsrv
php --ri pdo_sqlsrv
php -m | grep -E "sqlsrv|pdo_sqlsrv"

Webszerver esetén korlátozza a diagnosztikai oldalhoz való hozzáférést, mielőtt ideiglenes oldalt hoz létre, amely a(z) <?php phpinfo(); ?> elemet tartalmazza. Ellenőrizze a betöltött konfigurációs fájlt, az extension_dir értéket, valamint a különálló sqlsrv és pdo_sqlsrv szakaszokat. Távolítsa el az oldalt az ellenőrzés után.

Futtass egy PHP-szintű ellenőrzést is, hogy az ellenőrzés mindkét API-t lefedje, ne csak a modulneveket. Mentse el ezt a programot mint verify-php-drivers.php:

<?php
$checks = [
    'SQLSRV extension' => extension_loaded('sqlsrv'),
    'SQLSRV API' => function_exists('sqlsrv_connect'),
    'PDO_SQLSRV extension' => extension_loaded('pdo_sqlsrv'),
    'PDO_SQLSRV API' => class_exists('PDO')
        && in_array('sqlsrv', PDO::getAvailableDrivers(), true),
];

$failed = false;
foreach ($checks as $name => $passed) {
    echo $name . ': ' . ($passed ? 'loaded' : 'missing') . PHP_EOL;
    $failed = $failed || !$passed;
}

exit($failed ? 1 : 0);

Futtasd a programot minden PHP futtatható fájllal, amit az alkalmazásod használ:

php verify-php-drivers.php

Várt kimenet:

SQLSRV extension: loaded
SQLSRV API: loaded
PDO_SQLSRV extension: loaded
PDO_SQLSRV API: loaded

Webes futtatókörnyezethez ideiglenesen helyezze a fájlt a dokumentum gyökerébe, és kérje le a fájlt egy böngészőben. Távolítsd el az ellenőrzés után. Ez a program nem nyit meg adatbázis-kapcsolatot, és nem nyomtat konfigurációs értékeket.

Töröld verify-php-drivers.php a CLI- és webes futtatókörnyezeti ellenőrzések befejezése után.

Illesztőprogram betöltésének hibaelhárítása

Tünet Ellenőrzés oka Helyesbítő intézkedés
Unable to load dynamic library Rossz fájlnév, extension_dir, PHP alverziója, architektúra vagy szálbiztonsági mód Hasonlítsd össze a(z) php -i elemet a kiválasztott driverfájllal, és ideiglenesen használj abszolút elérési utat az elérésiút-hibák elkülönítésére
The specified module could not be found Windows rendszeren A driver DLL vagy valamelyik függősége nem érhető el Ellenőrizd, hogy a DLL a(z) extension_dir helyen van, telepítsd a megfelelő Visual C++ futásidőt, és ellenőrizd a megmaradt hiányzó DLL-függőséget
undefined symbol vagy megosztott könyvtár hiba Linuxon vagy macOS-en Kiterjesztés és PHP build eltérése, vagy hiányzó ODBC függőség Építsd újra a kívánt php-config használatával, majd ellenőrizd a jelzett hiányzó könyvtárat
Module "sqlsrv" is already loaded Duplikált bejegyzések vagy beolvasott fájlok Keresd meg a betöltött php.ini elemet és a beolvasási könyvtárat, majd tartsd meg az egyik bejegyzést
could not find driver a PDO-tól PDO_SQLSRV nincs betöltve, vagy a PDO utána töltődik Ellenőrizd php --ri pdo_sqlsrv és mozgasd át a PDO_SQLSRV bejegyzést a PDO után
A CLI működik, de a webes kérések kudarcot vallanak Eltérő SAPI-konfiguráció vagy egy folyamat, amit nem indítottak újra. Hasonlítsa össze a CLI és phpinfo() konfigurációs értékeket, szerkessze a webes konfigurációt, és indítsa újra a webes folyamatot
A régi elem ExtensionVer frissítés után is megmarad A konfiguráció még mindig egy régebbi, verziós fájlt nevez meg Cseréld le a régi bejegyzést a kiválasztott módszerrel telepített fájlra, távolítsd el a duplikátumokat, és indítsd újra az összes PHP-folyamatot

A PHP kezeli a bővítmények felderítését és betöltési sorrendjét. A kiterjesztést PIE vagy egy manuális másolat biztosítja. Az operációs rendszer betöltője feloldja a natív függőségeket. A Microsoft ODBC Driver kezeli az adatbázis-protokollt a bővítmény betöltése után.