ntwdblib.dll 的版本问题,是不少人在用 PHP 连 SQL Server 时踩过的坑。尤其你装了 SQL Server 2005 或 2008,结果一用mssql_connect()
就报错,提示连不上服务器,挺让人抓狂的。其实根源就出在默认的ntwdblib.dll
太老了,只认 SQL Server 2000。
PHP 安装目录自带的ntwdblib.dll
用在 2005 或 2008 上,嗯,基本稳报错。所以换成新版的 DLL 是关键。找个适配的版本,比如2000.80.2039.0
,放到C:\Windows\System32
或SysWOW64
里,具体位置看你是 32 位还是 64 位系统。
改完别忘了重启一下 Apache 哦,不然 PHP 还读着旧文件。做完这些,mssql_connect()
基本就能连上了。省得你绕一大圈去查驱动问题,其实就是个 DLL 版本没对上。
想了解更细的兼容问题,可以看看这篇php 连接 mssql 的 ntwdblib.dll 文件 64 位兼容问题。还有想搞清楚ntwdblib.dll
到底干嘛用的,可以读读ntwdblib.dll 文件解读,写得还蛮清楚。
如果你正用PHP 5.x
配SQL Server 2008
,又不打算换sqlsrv
驱动,那这招就实用。自己试过,比较稳。如果你是 PHP 新版本了,建议用pdo_sqlsrv
,官方支持更靠谱。