配置PHP与SQL Server的连接:
原本计划在NIIT课上将PHP与SQL Server的连接问题解决,但是忙活了两节课,收效甚微。查阅了大量的资料,也采用了多种方式,仍然没能将两者连接起来。报的错误也是非常让人头痛 “XXX方法不存在”。
先后采取的方法:
1. php_mssql.dll:
- 通过修改php.ini,将 extension=php_mssql.dll 前面的分号删除。
- 将mssql_secure_connection=Off改为On,
- 重启Apache。
结果仍然报错,mssql_connect()方法不存在。我按照另外一个博客主所写的博文,找到php的ext文件夹,结果却发现该文件夹内没有php_mssql.dll文件以及ntwdblib.dll文件。
配置php:
- a、打开php.in将extension=php_mssql.dll的注释符号去掉。
- b、打开php.in将mssql.secure_connection = Off改为on。
- c、将php_mssql.dll拷贝到php.in中extension_dir 指定的目录或者系统system32目录下。 (php_mssql.dll在php的压缩安装包中有)。
- 以上步骤完成后需要重启apache。
注意:实际使用中发现 如果通过php压缩文件手工安装php到iis下,必须重启机器而不仅仅是iis。
当我将这两文件都下载并放置到指定文件夹后,仍然报相同的错。此外,又有其他的教程,将php_mssql.dll 和 ntwdblib.dll 文件放置到系统盘的System32文件夹内。虽然我不认为这么做能解决该问题,但我还是照做了,结果仍然是报错。
2. sqlsrv:
后来终于找到一份不错的教程,并且根据该教程终于成功地让xampp集成中的php扩展了sqlsrv。特附上链接 php如何连接sql server
-
先到微软网站下载 SQL Server Driver for PHP(在这一步,我犯了一个错,没有导入与PHP版本相对应的扩展文件),获得一个自解压文件,解压缩后得到如下几个文件(截图上网找的,版本有些落后):
- 扩展文件的 数字 代表与之对应的PHP版本,例如php_sqlsrv_52_nts_vc6.dll对应于php5.2。
- 扩展文件的 nts 标识代表对应PHP版本是非线程安全。
- 扩展文件的 ts 标识代表对应PHP版本是线程安全。
因为没有导入匹配的扩展文件,所以导致我仍然没能在php中成功扩展 php_sqlsrv。
将扩展文件拷贝到php/ext目录下(目前下载的扩展文件是一个exe文件,能够自动安装,只要你指定安装路径为php/ext,安装结束后就会自动拷贝到php/ext目录下)。
-
在php.ini文件,添加以下代码:
- extension=php_sqlsrv_56_ts.dll(在ext目录的pdo扩展)
- extension=php_pdo_sqlsrv_56_ts.dll(在ext目录的扩展)
-
重启Apache,打开phpInfo();如果能够看到:
那么代表你已经成功地扩展了sqlsrv。
微软官网下载 MicroSoft ODBC SQL Server 11 Driver(具体名字,我也忘了),最后会得到一个msodbcsql.msi的文件,双击安装即可。但需要注意,下载和电脑相同类型的文件,如果你的电脑是32位,那么就下x86后缀的文件;如果是64位,就下载X64后缀的文件。
以上就是PHP配置的所有内容,如果仍然无法和SQL Server连接,那么你需要检查下SQL Server的配置以及你请求的路径、数据库名称、账号与密码是否有误。
后续总结:
关于SQL Server的配置,在此我就不多说了,网络上都有相关的资料,并且非常容易找到。不过我还是说一点:当我已经成功扩展sqlsrv,却还是无法连接到数据库时(其实是我没有写好数据库连接的信息......),一些资料让我去下载Microsoft SQL Native Client,然而通常情况下,安装SQL Server的时候是会自动安装MSNC,因此我觉得造成连接不到数据库的原因不是MSNC。
为了免去大家找寻资料麻烦,我已经将上述所需的安装包上传到百度云盘,大家可以直接去下载。
附:传送门