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