簡體   English   中英

將 PDO SQLSRV 與 PHP 一起使用不起作用

[英]Using PDO SQLSRV with PHP not working

我一直在試圖讓PDO SQLSRV工作(在Windows Server 2012中R2),而現在,發現說明書上,我應該如何設置它,這樣在啟動PHP驅動程序載入,但它不是在職的。

我找到了正確的 php.ini 文件(並通過注釋掉其他一些 PDO 驅動程序進行測試以確保)。 我在[ExtensionList]的末尾添加了適當的行,如下所示:

extension=php_pdo_sqlsrv_7_ts_x64.dll

我添加了其中的幾個,但沒有任何效果。 我通過使用phpinfo()運行腳本來檢查它,以顯示發生了什么。 擴展列表如下所示:

[ExtensionList]
; extension=php_mysqli.dll
extension=php_mbstring.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_curl.dll
extension=php_exif.dll
extension=php_xmlrpc.dll
extension=php_openssl.dll
extension=php_soap.dll
extension=php_pdo_mysql.dll
; extension=php_pdo_sqlite.dll
extension=php_imap.dll
extension=php_tidy.dll
extension=php_pdo_sqlsrv_7_ts_x64.dll
extension=php_sqlsrv_7_ts_x64.dll
extension=php_pdo_sqlsrv_7_nts_x64.dll
extension=php_sqlsrv_7_nts_x64.dll
extension=php_pdo_sqlsrv_72_ts_x64.dll
extension=php_sqlsrv_72_ts_x64.dll
extension=php_pdo_sqlsrv_72_nts_x64.dll
extension=php_sqlsrv_72_nts_x64.dll
extension=php_pdo_sqlsrv_72_ts.dll
extension=php_sqlsrv_72_ts.dll

所以PDO下應該是mysqlsqlsrv ,但是我只看到了mysql

在此處輸入圖片說明

我錯過了什么嗎?

更新

我嘗試更新 php.ini 文件,使其具有這些擴展的完整路徑,但仍然沒有任何區別。

Architecture=x64, Thread Safety=disabled, PHP Version=7.2.2, Microsoft ODBC Driver 17 for SQL Server

更新二

我已嘗試刪除除我需要的 2 個之外的所有引用,並為它們提供了完全限定的目錄路徑:

[ExtensionList]
; extension=php_mysqli.dll
extension=php_mbstring.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_curl.dll
extension=php_exif.dll
extension=php_xmlrpc.dll
extension=php_openssl.dll
extension=php_soap.dll
; extension=php_pdo_mysql.dll
extension=php_pdo_sqlite.dll
extension="C:\Program Files\PHP\v7.2\ext\php_pdo_sqlsrv_72_nts_x64.dll"
extension="C:\Program Files\PHP\v7.2\ext\php_pdo_sqlsrv_7_nts_x64.dll"
extension=php_pdo_sqlsrv.dll
extension=php_imap.dll
extension=php_tidy.dll

我仍然無法讓 SQL SRV 工作,它仍然沒有顯示在 PHPInfo 打印輸出中。

還有其他關於我可以嘗試的建議嗎?

更新

昨天我從這里重新安裝了 PHP 7.2(現在是 7.2.6 版)。 並從此處重新安裝 Microsoft Drivers 5.2 for PHP for SQL Server。 並像這樣更新我的 php.ini 文件:

[ExtensionList]
extension=php_mbstring.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_curl.dll
extension=php_exif.dll
extension=php_xmlrpc.dll
extension=php_openssl.dll
extension=php_soap.dll
extension=php_imap.dll
extension=php_tidy.dll
extension=php_pdo_sqlsrv.dll
extension="C:\Program Files\PHP\v7.2\ext\php_pdo_sqlite.dll"
; extension=php_pdo_mysql.dll
extension=php_mysqli.dll

看看這是否會有所幫助或有所作為。 php_pdo_sqlsrv.dll仍然沒有加載,然后php_pdo_sqlite.dll確實加載了,並且它們都與同樣加載的 php_mysqli.dll 位於同一文件夾中。 我已按照我在此處找到的說明進行操作,但似乎沒有任何方法可以加載該 SQL SRV dll。

我終於能夠弄清楚並讓它工作。 我嘗試安裝需要 Composer 的 CakePHP。 因此,在安裝 Composer 時,我遇到了一個我以前從未見過的錯誤,並發布了一個關於此的問題。 最終結果是我不得不再次重新安裝 PHP,然后更新 php.ini 以便只有 PDO SQLSRV 的 TS 版本。

另一個問題在這里

如果有人偶然發現了這一點,如果您不取消注釋 php.ini 中的 ext dir conf 它將不會加載模塊,這看起來很簡單,但很多人(包括我)注意到了,我希望 PHP 會尋找它的默認目錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM