![](/img/trans.png)
[英]SQLServer transaction not working with PHP PDO using sqlsrv in command line
[英]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下應該是mysql
和sqlsrv
,但是我只看到了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.