PHP沒有載入sqlsrv擴展
我無法讓 PHP 在
sqlsrv
執行 IIS 和 PHP 7.1.7 的 64 位 Windows 伺服器 2012 R2 上使用 Microsoft 的擴展。當我執行時,phpinfo()
我沒有看到擴展已載入。我假設我應該尋找sqlsrv
副檔名。PHP 錯誤日誌中也沒有任何類型的載入擴展失敗的錯誤。我下載了 Microsoft 驅動程序的 4.3 版,該驅動程序聲明它們與 PHP 7.1 兼容。我已將 dll 文件複製到
PHP\v7.1\ext
目錄中。我將以下行添加到 php.ini 文件中。extension=php_sqlsrv_7_nts_x64.dll extension=php_pdo_sqlsrv_7_nts_x64.dll
我已經通過故意拼錯其中一個 dll 名稱並在 php 日誌中看到相應的錯誤來驗證我的 php.ini 文件正在被讀取。
已安裝 SQL Server Native Client 10 和 11。
我已經回收了應用程序池,重新啟動了 W3SVC 服務,並重新啟動了伺服器。
我希望這裡有人可以提供一些其他的東西來嘗試。
第一個我還沒有解決的問題是我的 php 錯誤日誌沒有顯示擴展載入問題,除非我更改日誌文件名。更改日誌文件名後,我收到以下錯誤:
PHP Warning: PHP Startup: Unable to load dynamic library ‘C:\Program Files\PHP\v7.1\ext\php_pdo_sqlsrv_7_nts_x64.dll’ - The specified procedure could not be found .
事實證明,我需要使用特定於 PHP 7.1 的驅動程序。我不知道為什麼,我的原始下載不包括 7.1 驅動程序。也許我第一次錯誤地下載了 sqlsrv 4.0 驅動程序。我去這裡下載了 sqlsrv 4.3 驅動程序:
https://www.microsoft.com/en-us/download/details.aspx?id=55642
我將以下內容添加到我的 php.ini
擴展=php_sqlsrv_71_nts_x64.dll
擴展=php_pdo_sqlsrv_71_nts_x64.dl
sqlsrv 擴展現在已載入。我希望這對其他人有幫助。