Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.inibetöltve. - A további
.inivizsgá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.