查看已安裝的php版本(重要,如果版本和所下載的.dll文件不匹配,配置后仍然會(huì)無效)
下載并直接安裝微軟提供的官方ODBC驅(qū)動(dòng)(必須,否則配置失效):
https://docs.microsoft.com/zh-cn/sql/connect/odbc/windows/release-notes-odbc-sql-server-windows?view=sql-server-ver15#13根據(jù)php版本號(hào),查看并下載微軟提供的官方MSSQL擴(kuò)展:
https://docs.microsoft.com/zh-cn/sql/connect/php/release-notes-php-sql-driver?view=sql-server-ver15
得到.exe壓縮包(又稱SQLSRV驅(qū)動(dòng)程序)-
直接解壓該壓縮包,得到一些.dll擴(kuò)展文件,可能如下圖所示(版本號(hào)會(huì)有所不同):
SQLSRV驅(qū)動(dòng)程序 此壓縮包中提供兩種文件:pdo_sqlsrv類型驅(qū)動(dòng)程序(如:圖中前四個(gè).dll文件)和sqlsrv類型驅(qū)動(dòng)程序(如:圖中后四個(gè).dll文件)。從兩種類型各選擇一個(gè)與當(dāng)下php運(yùn)行環(huán)境相匹配的.dll文件,粘貼進(jìn)php的ext文件夾中。
-
.dll文件選擇須知:
- 為什么要兩種驅(qū)動(dòng)程序中各選一個(gè)并同時(shí)使用?
答:sqlsrv 驅(qū)動(dòng)程序用于提供與 SQL Server 交互的過程接口,pdo_sqlsrv 驅(qū)動(dòng)程序用于實(shí)現(xiàn) PHP面向?qū)ο蟮腜DO接口,用于處理數(shù)據(jù)庫(kù) - TS類型驅(qū)動(dòng)程序和NTS類型驅(qū)動(dòng)程序應(yīng)該選哪個(gè)?
答:TS(Thread-Safety)即線程安全,多線程訪問時(shí),采用了加鎖機(jī)制,當(dāng)一個(gè)線程訪問該類的某個(gè)數(shù)據(jù)時(shí)進(jìn)行數(shù)據(jù)加鎖保護(hù),其他線程不能同時(shí)進(jìn)行訪問該數(shù)據(jù),直到該線程讀取完畢,其他線程才可訪問使用該數(shù)據(jù),好處是不會(huì)出現(xiàn)數(shù)據(jù)不一致或者數(shù)據(jù)污染的情況,壞處是耗費(fèi)的時(shí)間要比 NTS 長(zhǎng)。PHP以 ISAPI 方式(Apache 常用方式)加載的時(shí)候選擇TS版本。NTS: NTS(None-Thread Safe)即非線程安全,不提供數(shù)據(jù)訪問保護(hù),有可能出現(xiàn)多個(gè)線程先后或同時(shí)操作同一數(shù)據(jù)的情況,壞處是容易造成數(shù)據(jù)錯(cuò)亂(即臟數(shù)據(jù)),好處是一般操作執(zhí)行時(shí)間比 TS 短
- 為什么要兩種驅(qū)動(dòng)程序中各選一個(gè)并同時(shí)使用?
根據(jù)上條原則,我的電腦是x64系統(tǒng),于是選擇
php_sqlsrv_7_ts_x64.dll文件和php_pdo_sqlsrv_7_ts_x64.dll文件。接下來,修改php的php.ini文件,在其中增加擴(kuò)展連接并保存修改:
extension=php_sqlsrv_7_ts_x64.dll
extension=php_pdo_sqlsrv_7_ts_x64.dll重啟Apache服務(wù),使用
phpinfo()函數(shù)檢查輸出是否成功
原文鏈接:https://blog.csdn.net/Tuimaohenyouya/article/details/137766107
