环境:apache2, php5, sql server 2008 express
第一步、配置php.ini
确认php\ext中有mssql的模块;去掉extension=php_mssql.dll前的分号。
第二步、安装正确的ntwdblib.dll
这一步很关键!
ntwdblib.dll 版本为 2000.2.8.0 是 对应 SqlServer2000(这个是网络查资料和猜测,没装2000)
ntwdblib.dll 版本为 2000.80.194.0 是 对应 SqlServer2005(这个是网络查资料和猜测,没装2000)
ntwdblib.dll 版本为 2000.80.2039 是 对应 SqlServer2008(这个是我验证的,最后的最后,问题原来出在这里!)
把正确版本的ntwdblib.dll分别放在C:\Windows\System32\,apache\bin\,和php\的安装目录下
第三步、配置正确sql server运行环境(编的名称。。)
1. 运行 SQL Server 配置管理器:SQL Server Configuration Manager,打开SQL Native Client 10.0配置下的客户端协议
2. 允许命名管道 "named pipes" 和 "tcp/ip"
3. 右键点击 "tcp/ip",打开属性
4. 在默认端口填入 1433
第四步、改变sql server 2008 express的身份验证方式
这个就是我在上一篇里拼命装sql server管理器的原因。但最后还是没能装上,采用了下面的方法(http://www.cnblogs.com/greening/archive/2006/11/15/560899.html):
安装完VS20xx,同时内含安装了SQL Server 20xx Express版,安装完成后SQL Server的默认身份验证方式为仅Windows 身份验证模式。由于Express版没有SQL Server Management Studio ,不能很方便的更改身份验证模式,所以结合MSDE2000更改身份验证模式的方法,研究出以下方法来更改已安装的SQL Server 20xx Express版身份验证方式。
1. 启用 混合模式(Windows 身份验证和 SQL Server 身份验证)
方法:打开注册表编辑器(Windows+R,输入regedit),找到 Software\Microsoft\Microsoft SQL Server\MSSQL1??? (查找LocalMode即可)
这个是该实例的注册表根目录。查看方法:用SQL Server Configuration Manager工具查看SQL Server 2005服务,
选中服务实例,右键属性->高级->看"注册表根目录的值",就是它了。
修改MSSQLServer\LoginMode的值为2 , 原值为1
关闭注册表编辑器,重启SQLServerExpress实例的服务
2. 启用sa用户,并修改sa的口令
方法:运行SQLCMD命令行工具:\sqlcmd -S .\sqlexpress
EXEC sp_password NULL, 'SA的口令', 'sa'
ALTER LOGIN sa ENABLE
GO
第五步、重启apache, sql server(express)
php连接数据库的语句:
<?php
$conn=mssql_connect('.\sqlexpress','Username','Password');
if($conn)
echo "Success";
else
echo "Fail";
?>
参考了很多前辈的资料,就不一一列举了。。。