Php

PHP沒有載入sqlsrv擴展

  • November 29, 2017

我無法讓 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 擴展現在已載入。我希望這對其他人有幫助。

引用自:https://serverfault.com/questions/885763