最开始的问题:
连接mysql没问题,连接sqlserver 一直不行,但是在客户端可以连接,说明肯定程序或者是扩展哪里没弄对,就一直报could not find driver这个错误
1、php扩展,可以使用 phpinfo() 来查看是否成功加载了 pdo_sqlsrv 模块,没问题
扩展下载链接地址:https://docs.microsoft.com/zh-cn/sql/connect/php/release-notes-php-sql-driver?view=sql-server-ver15我的系统是64位Windows,PHP 线程版本类型是 TS,下载相应的版本,复制扩展文件到 PHP 扩展目录,php.ini 里加如下配置https://docs.microsoft.com/zh-cn/sql/connect/php/release-notes-php-sql-driver?view=sql-server-ver15
extension=php_sqlsrv_7_ts_x64.dll
extension=php_pdo_sqlsrv_7_ts_x64.dll
加完扩展后,一定要重启环境。
2、php7连接方式改变了,PHP5.6用dblib
'dsn' => 'dblib:host=*.*.*.*;dbname=****'
修改为:
'dsn' => 'sqlsrv:Server=*.*.*.*;DataBase=*****',
3、到这步了,错误还是出现,通过查找是因为还需要 下载 ODBC Driver(数据库链接驱动)并安装
根据需要选择 ODBC Driver 并进行安装:
Microsoft® ODBC Driver 11 for SQL Server® - Windows (支持Sql Server® 2005)
https://www.microsoft.com/zh-CN/download/details.aspx?id=36434
Microsoft® ODBC Driver 13 for SQL Server® - Windows + Linux (支持最新的SQL Server® 2016)
https://www.microsoft.com/zh-CN/download/details.aspx?id=50420
Microsoft® ODBC Driver 13.1 for SQL Server® - Windows + Linux (推荐安装此版本,支持最新的SQL Server® 2016),我自己安装了这个版本
https://www.microsoft.com/en-us/download/details.aspx?id=53339
如果数据库驱动版本不匹配,那么 PHP 连接 SQL Server 时会出现错误:Invalid handle returned
然后再重启,就ok了。