Thinkphp5下用php5.6連接(MSSQL)sqlsrv 數(shù)據(jù)庫出現(xiàn)“could not find driver(PDOException in Connection.php line 293)”的解決辦法
[重要通告]如您遇疑難雜癥,本站支持知識付費業(yè)務,掃右邊二維碼加博主微信,可節(jié)省您寶貴時間哦!
今天淘寶的客戶來說,他一個站使用Thinkphp5建立的,中間還有asp的程序,做的各種api接口,感覺還挺復雜的,但是運行某個界面的時候提示錯誤,錯誤是“could not find driver(PDOException in Connection.php line 293)”具體如下圖;
經(jīng)過詢問得知,客戶是Thinkphp5+mssql+asp+PHP5.6整個的搭建,看錯誤的原因,應該是驅(qū)動的問題,想著是驅(qū)動的問題,那就解決驅(qū)動嘍;以前站內(nèi)也寫過其他相關文章,具體站內(nèi)查看;??Thinkphp5下如何使用odbc連接sqlserver
網(wǎng)上資料都是各種介紹,各種說,基本上都是說需要下載微軟的驅(qū)動放在ext文件夾后,再在php.ini中增加如下配置:
[PHP_PDO_SQLSRV]
extension=php_pdo_sqlsrv_56_ts.dll
[PHP_SQLSRV]
extension=php_sqlsrv_56_ts.dll
最后重啟服務器即可,但我重啟了IIS甚至服務器依然無濟于事,這問題就又來了,難道我下的東西有問題?其實客戶當時也設置了參數(shù),具體請看;
可是客戶也設置了,依然不通訊,那就說明下載的有問題,不光客戶的有問題,我下載的東西也是有問題;
經(jīng)過在大腦多種想象中,可能還是dll的參數(shù)問題,可能就出現(xiàn)在32位以及64位上;原來微軟官方提供的microsoft drivers 3.2 for php for sql server并不支持64位的php版本,那就要找支持64位系統(tǒng)的,客戶也說他下載的dll也是64位的,本想尋找32位的支持,一想客戶設置的64的系統(tǒng),干脆64的就哦了;
解決辦法如下:
1. 確保正確安裝sql server 2005 (客戶sql2005), 開啟sql server的遠程連接訪問,檢查防火墻,確認在本地可以通過SQL Server Configuration Manager連接到服務器。
2. 修改 php.ini 開啟相關擴展(php_pdo.dll ,php_pdo_mssql.dll ,php_mssql.dll),重啟IIS或者Apache后,一定要用phpinfo()檢查是否成功加載;
3. 修改php.ini中:mssql.secure_connection = Off ,有的沒有這一項,也有的是On,這一步可以忽略;
64位PHP加載sqlsrv 數(shù)據(jù)庫屬于知識付費業(yè)務:
延伸閱讀:
1、php.ini的extension_dir定位到C盤,所以也可以用絕對路徑引用,也可以修改成extension_dir=ext,然后就相對路徑引用即可,如extension=php_sqlsrv_56_nts.dll,具體看我上圖,經(jīng)過按照下圖的設置,客戶的站就解決了相關問題;
2、PHP各種版本中TS和NTS是什么意思?有什么區(qū)別?
另外的解決辦法,關于PHP7.0的;
解決方法:
(1)php7.0以下版本
extension=php_pdo.dll extension=php_pdo_sqlite.dll
(2)、php7.0以上版本
extension=pdo extension=pdo_mysql
【備注】:擴展開啟之后一定要,重啟服務
問題未解決?付費解決問題加Q或微信 2589053300 (即Q號又微信號)右上方掃一掃可加博主微信
所寫所說,是心之所感,思之所悟,行之所得;文當無敷衍,落筆求簡潔。 以所舍,求所獲;有所依,方所成!