【发布时间】:2012-07-17 14:32:00
【问题描述】:
我正在尝试使用 PHP 连接到另一台机器上的 SQL Server。我找到了两种方法来做到这一点。使用 odbc_connect 或 sqlsrvr 连接。
$connection = odbc_connect("Driver={SQL Server Native Client 10.0};Server=$serverName;Database=$db;", 'user', 'pass');
或
$conn = sqlsrv_connect($serverName, array('UID' => '', 'PWD' => ''));
如果我尝试连接到 SQL 帐户,则连接有效。不幸的是,我无法使用 Windows 身份验证进行连接。
到目前为止,我已经尝试了以下方法:使用了工作通行证,添加了 Trusted_Connection=yes;或集成安全=SSPI; .我也尝试将它与 fastcgi.impersonate = 1 或 0 结合使用。
当我直接使用我的用户并通过时,我收到一个登录被拒绝错误,当我尝试使用 sspi 进行 Windows 身份验证时,我收到以下错误:用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败。
我在谷歌上搜索了很多问题,但找不到解决方案。然而,有些人在谈论 php 不使用网络服务帐户,这可能是问题所在。
有谁知道我该如何解决这个问题或者给我一个领导?
提前谢谢你。
【问题讨论】:
-
您将使用您的 php 进程(或 webserver 进程)正在运行的 UID 登录。
-
有什么方法可以改变运行进程的用户吗?我以前没有这样做过,我会很感激“傻瓜”类型的链接。我一直认为在我登录时运行的应用程序是使用我的帐户运行的。
-
取决于您的网络服务器,但是在更改操作 UID 时需要考虑很多事情 - 除非您操作正确,否则您可能会完全破坏网络服务器。
-
你有没有链接或者我可以用谷歌搜索的东西?
-
我终于通过安装 IIS6 和 php 解决了这个问题。我配置 inetmgr 是为了更改默认情况下用于匿名登录的用户。对于其他遇到此问题的人,请点击链接:learn.iis.net/page.aspx/247/…
标签: php sql-server odbc windows-authentication