Thinkphp5下用php5.6连接(MSSQL)sqlsrv 数据库出现“could not find driver(PDOException in Connection.php line 293)”的解决办法
[重要通告]如您遇疑难杂症,本站支持知识付费业务,扫右边二维码加博主微信,可节省您宝贵时间哦!
今天淘宝的客户来说,他一个站使用Thinkphp5建立的,中间还有asp的程序,做的各种api接口,感觉还挺复杂的,但是运行某个界面的时候提示错误,错误是“could not find driver(PDOException in Connection.php line 293)”具体如下图;
经过询问得知,客户是Thinkphp5+mssql+asp+PHP5.6整个的搭建,看错误的原因,应该是驱动的问题,想着是驱动的问题,那就解决驱动喽;以前站内也写过其他相关文章,具体站内查看; Thinkphp5下如何使用odbc连接sqlserver
网上资料都是各种介绍,各种说,基本上都是说需要下载微软的驱动放在ext文件夹后,再在php.ini中增加如下配置:
[PHP_PDO_SQLSRV]
extension=php_pdo_sqlsrv_56_ts.dll
[PHP_SQLSRV]
extension=php_sqlsrv_56_ts.dll
最后重启服务器即可,但我重启了IIS甚至服务器依然无济于事,这问题就又来了,难道我下的东西有问题?其实客户当时也设置了参数,具体请看;
可是客户也设置了,依然不通讯,那就说明下载的有问题,不光客户的有问题,我下载的东西也是有问题;
经过在大脑多种想象中,可能还是dll的参数问题,可能就出现在32位以及64位上;原来微软官方提供的microsoft drivers 3.2 for php for sql server并不支持64位的php版本,那就要找支持64位系统的,客户也说他下载的dll也是64位的,本想寻找32位的支持,一想客户设置的64的系统,干脆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 数据库属于知识付费业务:
延伸阅读:
1、php.ini的extension_dir定位到C盘,所以也可以用绝对路径引用,也可以修改成extension_dir=ext,然后就相对路径引用即可,如extension=php_sqlsrv_56_nts.dll,具体看我上图,经过按照下图的设置,客户的站就解决了相关问题;
另外的解决办法,关于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号又微信号)右上方扫一扫可加博主微信
所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!