我已经做了很多研究,试图让我的IIS上的PHP代码连接到我的MSSQL数据库。我似乎无法弄清楚这个问题。有没有人遇到过这个?
<?php
$serverName = 'AEGIS-PC\SQLEXPRESS';
$connectionInfo=array('Database'=>'tttb_db');
$con = sqlsrv_connect($serverName, $connectionInfo);
if($con){
echo 'Connection established<br />';
}
else {
echo 'Connection failed<br />';
die(print_r(sqlsrv_errors(), TRUE));
}
?>
更新,我们遇到了新的错误:
连接失败 数组([0] =&gt;数组([0] =&gt; 28000 [SQLSTATE] =&gt; 28000 [1] =&gt; 18456 [代码] =&gt; 18456 [2] =&gt; [Microsoft] [ODBC驱动程序11 for SQL Server] [SQL Server]登录失败,因为用户&#39; NT AUTHORITY \ IUSR&#39;。[message] =&gt; [Microsoft] [用于SQL Server的ODBC驱动程序11] [SQL Server]用户登录失败&#39; NT AUTHORITY \ IUSR&#39;。)[1] =&gt;数组([0] =&gt; 42000 [SQLSTATE] =&gt; 42000 [1] =&gt; 4060 [code] =&gt; 4060 [ 2] =&gt; [Microsoft] [用于SQL Server的ODBC驱动程序11] [SQL Server]无法打开数据库&#34; tttb_db&#34;登录请求。登录失败。[message] =&gt; [Microsoft] [用于SQL Server的ODBC驱动程序11 [SQL Server]无法打开数据库&#34; tttb_db&#34;登录请求。登录失败。)[2] =&gt;数组([0] =&gt; 28000 [SQLSTATE] =&gt; 28000 [1] =&gt; 18456 [code] =&gt; 18456 [2] =&gt; [Microsoft] [用于SQL Server的ODBC驱动程序11] [SQL Server]用户登录失败&nbsp; NT AUTHORITY \ IUSR&#39; [message] =&gt; [Microsoft] [SQL Server的ODBC驱动程序11] [SQL Serv呃]用户“NT AUTHORITY \ IUSR&#39;”登录失败。 )[3] =&gt;数组([0] =&gt; 42000 [SQLSTATE] =&gt; 42000 [1] =&gt; 4060 [code] =&gt; 4060 [2] =&gt; [Microsoft] [SQL Server的ODBC驱动程序11] [SQL Server ]无法打开数据库&#34; tttb_db&#34;登录请求。登录失败。[message] =&gt; [Microsoft] [SQL Server的ODBC驱动程序11] [SQL Server]无法打开数据库&#34; tttb_db& #34;登录请求。登录失败。))
我们的SQL服务器使用Windows身份验证,我们的服务器名称为AEGIS-PC\SQLEXPRESS
,用户名和密码块显示为灰色。我无法想到我们的登录失败的原因。我们做错了什么?
答案 0 :(得分:3)
有一些事情可能导致此类问题:
1。)您的模块未加载,因为它的VC9代替VC11。检查系统使用的编译器版本并安装正确的驱动程序。
2.。)检查您的PHP版本并使用正确的PHP版本驱动程序,您可以在phpinfo()
中查看。
3.。)不要忘记安装MSSQL Native Client,否则无法连接到数据库,这是我每次都遇到的问题。
您的代码看起来很好,如果您收到错误消息sqlsrv_connect
未找到该模块未加载的信号。
https://www.microsoft.com/en-us/download/details.aspx?id=20098
答案 1 :(得分:1)
您需要为“NT AUTHORITY \ IUSR”系统帐户添加服务帐户,以便IIS访问数据库。
这是错误字符串的关键部分:
[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Login failed for user 'NT AUTHORITY\IUSR'
当有人点击网站并且php脚本试图访问SQL Server时,它使用IIS的系统帐户,而不是网站帐户上的用户。您可以让IIS对数据库请求使用Windows身份验证。有关使用IIS启用Windows身份验证,请参阅下文 https://technet.microsoft.com/en-us/library/cc754628%28v=ws.10%29.aspx
公平警告,仅当用户点击网页与网络服务器位于同一个AD域时才有效。
如果您完全走这条路线,请注意您为IIS系统帐户分配的权限。
答案 2 :(得分:1)
只需几步。
这应该可以解决您的问题